目录
1.界面搭建

2.登录客户端步骤分析

3.拼接登录请求实现
CGI 程序处理流程
程序员自己写程序处理各种业务
CGI 程序的输入来自 web 服务器(标准输入和环境变量)
web 服务器会将 http 报文按照 CGI 标准转换后传递给 CGI 程序
CGI 程序返回 http 数据给 web 服务器(标准输出)
请求头: web 服务器设定环境变量们传递给 cgi 程序, CGI 程序通过
getenv 函数获取
请求的身体: web 服务器直接将身体的字符串传递给 cgi 程序的标准
输入
FastCGI 程序处理
CGI 程序缺点:资源消耗大,某些初始化操作冗余
FastCGI :一共启一个进程,通过 socket 接收和回复 web 服务器传来
的请求
数据是基于 FastCGI 标准编码过的二进制数据
4.发送http请求

5.服务器登录请求处理
用户注册页面和处理
页面:点击提交后会向服务器发一个 POST 请求(身体是一串 用户
名 & 密码 字符串)
reg_cgi 程序,读取用户名和密码( fread 字符串处理) --- 》调用检
查用户和添加用户的函数
reg_cgi 程序,输出成功或失败的网页提示
添加用户函数: system 调用添加用户脚本(不关心返回值时)
查询用户是否存在函数: fork+exec 形式调用脚本(关心脚本执行是
否成功)
在 qt 界面的注册按钮槽函数中调用 QDesktopServices::openUrl ,传
入注册页 url----> 启动浏览器
登陆窗口搭建
密码输入栏 --- 》 echoMode : password
6.客户端处理服务器回复数据

7.注册页面启动

8.qt启动游戏程序
接收服务器回复的 http
在主窗口类中定义属性 QNetworkReply ,用来存某次请求的回复对
象
接收完 post 或 get 函数的返回值后, connect 到某个回复处理函数
( finished )
回复处理函数中,若失败则弹出提示窗口
QCryptographicHash 类,
- 创建生成器( QCryptographicHash::md5 )
- addData 添加原始数据
- result () .toHex() 获取签名值并转换成 16 进制的可显示数据
1
2
3
4 服务器处理登陆请求
取数据:先取长度( CONTENT_LENGTH ) ,CJSON 库解析数据并创
建 json 对象,调用 get 函数取用户名和密码
处理数据:调用 CheckUser 函数验证用户名和密码
回复登陆结果:创建 json 对象,设置 login_result 键的值( OK 或
Failed ),填 Content-Length 属性( json 字符串的长度), printf 整
个 json 字符串( ToFormatString );
启动游戏进程
调用 qproccess 的 startdetached ()
游戏客户端和 qt 程序放到同级目录
客户端创建房间
在原登陆请求中增加一个 key 代表当前操作( create_room )
服务器在原回复的基础上,增加一个 key 代表房间信息(新建的容器
的端口号)
先弹出提示框(显示房间号),然后启动游戏
服务器处理创建房间