目录
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
类,
1.
创建生成器(
QCryptographicHash::md5
)
2. addData
添加原始数据
3. 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
代表房间信息(新建的容器
的端口号)
先弹出提示框(显示房间号),然后启动游戏
服务器处理创建房间