| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 1116 人关注过本帖, 1 人收藏
标题:foxpro web 开发原理(二)
取消只看楼主 加入收藏
sam_jiang
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:935
专家分:1473
注 册:2021-10-13
结帖率:97.44%
收藏(1)
已结贴  问题点数:20 回复次数:3 
foxpro web 开发原理(二)
上次发帖探讨了一下web开发的原理,很多人感兴趣,那么我们就继续探讨一下。

deepseek 提供的代码,编译后运行有问题,一直报错502.2,deepseek也一直解决不了,没办法,只好上网继续搜索相关内容。

最后,只好退而求其次,找到其他的语言,再设法翻译成foxpro,好在懂一点点visual basic,参考VB代码,改编了foxpro代码,编译运行后果然成功了。。。

现附上代码,以作抛砖引玉之功效:
程序代码:
* CGI处理示例
* 定义 Windows API 常量
#DEFINE STD_INPUT_HANDLE   -10
#DEFINE STD_OUTPUT_HANDLE  -11

* 声明 Windows API
DECLARE Sleep IN kernel32 INTEGER dwMilliseconds
DECLARE INTEGER GetStdHandle IN kernel32 INTEGER nStdHandle
DECLARE INTEGER ReadFile IN kernel32 ;
    INTEGER hFile, ;
    STRING @lpBuffer, ;
    INTEGER nNumberOfBytesToRead, ;
    INTEGER @lpNumberOfBytesRead, ;
    INTEGER lpOverlapped

DECLARE INTEGER WriteFile IN kernel32 ;
    INTEGER hFile, ;
    STRING lpBuffer, ;
    INTEGER nNumberOfBytesToWrite, ;
    INTEGER @lpNumberOfBytesWritten, ;
    INTEGER lpOverlapped

* CGI 环境变量常量
CGI_CONTENT_LENGTH = "CONTENT_LENGTH"

* 主程序
CLEAR
SET TALK OFF
SET CONSOLE OFF

* 获取标准输入输出句柄
hStdIn = GetStdHandle(STD_INPUT_HANDLE)
hStdOut = GetStdHandle(STD_OUTPUT_HANDLE)

* 调试用暂停(如果需要)
* [color=#808080]=Sleep(60000)  && 暂停60秒等待调试器附加[/color]

* 读取POST内容
lcContentLength = GETENV(CGI_CONTENT_LENGTH)
lnContentLength = VAL(lcContentLength)

IF lnContentLength > 0
    * 准备缓冲区
    lcReadBuffer = REPLICATE(CHR(0), lnContentLength)
    lnBytesRead = 0
    
    * 读取输入
    =ReadFile(hStdIn, @lcReadBuffer, lnContentLength, @lnBytesRead, 0)
    lcReadBuffer = LEFT(lcReadBuffer, lnBytesRead)
    
    * 解析参数
    lnPos = AT("=", lcReadBuffer)
    IF lnPos > 0
        lcValue = SUBSTR(lcReadBuffer, lnPos + 1)
    ELSE
        lcValue = lcReadBuffer
    ENDIF
ELSE
    lcValue = ""
ENDIF

* 构建响应
lcResponse = "HTTP/1.0 200 OK" + CHR(13) + CHR(10) + ;
            "Content-Type: text/html" + CHR(13) + CHR(10) + ;
            CHR(13) + CHR(10) + ;
            "Hello World!" + lcValue

* 发送响应
lnBytesWritten = 0
=WriteFile(hStdOut, lcResponse, LEN(lcResponse), @lnBytesWritten, 0)

* 清理
CLEAR DLLS
RETURN


运行后效果如下:
图片附件: 游客没有浏览图片的权限,请 登录注册
收到的鲜花
  • kangss2025-05-05 13:07 送鲜花  1朵  
搜索更多相关主题的帖子: kernel32 foxpro INTEGER web 开发 
2025-05-04 20:36
sam_jiang
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:935
专家分:1473
注 册:2021-10-13
收藏
得分:0 
回复 5楼 easyppt
回复 5楼 easyppt
这个问题问得好,说明你认真思考了

这个程序就是cgi程序,我编译后把它命名为control.exe,保存在服务器的cgi目录,最好把foxpro支持库也复制过去,避免运行错误。

IIS 配置如下:
1,
图片附件: 游客没有浏览图片的权限,请 登录注册

2,
图片附件: 游客没有浏览图片的权限,请 登录注册

3,
图片附件: 游客没有浏览图片的权限,请 登录注册


[此贴子已经被作者于2025-5-6 19:32编辑过]

2025-05-06 10:48
sam_jiang
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:935
专家分:1473
注 册:2021-10-13
收藏
得分:0 
4,
图片附件: 游客没有浏览图片的权限,请 登录注册


sample.fpx是我们自定义的脚本文件,本例子只是为了了解cgi的运行原理,实际上control.exe并没有对sample.fpx进行任何解释,以后我会举例如何对自定义脚本进行解析。。。

[此贴子已经被作者于2025-5-6 20:14编辑过]

2025-05-06 19:40
sam_jiang
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:935
专家分:1473
注 册:2021-10-13
收藏
得分:0 
4,
图片附件: 游客没有浏览图片的权限,请 登录注册
2025-05-06 19:41
快速回复:foxpro web 开发原理(二)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022177 second(s), 13 queries.
Copyright©2004-2025, BC-CN.NET, All Rights Reserved