IOCPDemo通讯协议
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
IOCPDemo通讯协议
协议描述文档
联系人
SQLDebug_Fan
fansheng_hx@
/SQLDebug_Fan
免责说明:此文档仅作为技术交流使用,切勿用于商业用途。
目录
1说明 (4)
1.1字节顺序 (4)
1.2错误码 (4)
1.3包格式说明 (4)
2Flag:1 SQL查询协议 (5)
2.1错误码 (5)
2.2Login:登陆 (5)
2.3Active:检测连接 (5)
2.4SQLOpen:SQL语句查询 (6)
2.5SQLExec:SQL语句执行 (6)
2.6BeginTrans:开始事务 (7)
2.7CommitTrans:提交事务 (7)
2.8SendFile:发送文件 (7)
3Flag:2上传文件 (9)
3.1错误码 (9)
3.2Longin:登陆 (9)
3.3Active:检测连接 (9)
3.4Dir:获取目录结构 (9)
3.5CreateDir:创建目录 (10)
3.6DeleteDir:删除目录 (10)
3.7FileList:获取文件列表 (10)
3.8DeleteFile:删除文件 (11)
3.9Upload:上传开始 (11)
3.10Data:数据包 (12)
3.11Eof:上传完成 (12)
4Flag:3下载文件 (13)
4.1错误码 (13)
4.2Login:登陆 (13)
4.3Active:检测连接 (13)
4.4Dir:获取目录结构 (13)
4.5FileList:获取文件列表 (13)
4.6Download:下载文件 (14)
5Flag:8 控制协议 (15)
5.1错误码 (15)
5.2Login:登陆 (15)
5.3Active:检测连接 (15)
5.4GetClients:获取客户端列表 (15)
6Flag:9 日志下发协议 (16)
1说明
IOCPDemo服务器Socket默认监听端口为9999,所有连接服务器的Socket,其发送的第一字节为其身份标志,各个协议标志不相同,不在规定标志内的连接将被服务器断开,并且第一字节要求(默认)6秒内必须发送,否则会被强制断开。
1.1 字节顺序
IOCPDemo服务端通讯协议都是采用小头结构(低位在前、高位在后、X86都是采用这类结构)的长度,以后加入的协议都采用小头结构,其它平台都需兼容。
协议都采用匈牙利命名法则,每个单词首字母大写,解析命令不区分大小写,各个命令之间的顺序可以乱。
1.2 错误码
为了加强协议的可调试性,对于每个命令返回值增加一个CODE,用来标识发生错误原因,CODE是一个4字节的无符号整数,第一个字节标识Flag,第二个字节标识是那个命令,后面两个字节表示错误。
通用错误码
1.3 包格式说明
第一字节为Flag,以后的数据为数据包,每一个数据包格式如下:
首先为数据包长度Len: Cardinal,4Byte;
然后为数据包内容,长度为Len。
每个数据报包含可以两个部分内容:命令或数据,也可以只包含命令或者只包含数据,命令和数据以双回车换行分隔,每个包必须包含双回车换行!
2Flag:1 SQL查询协议
2.1 错误码
2.2 Login:登陆
客户端->服务器
{
[Request]
Command=Login
UserName=admin #用户名
Password=admin #密码
}
服务器->客户端
{
[Response]
Command=Login
Code= Error Code #错误码
Message=Message #如果出错,返回错误描述信息}
2.3 Active:检测连接
客户端->服务器
{
[Request]
Command=Active
}
服务器->客户端
{
[Response]
Command= Active
Code= Error Code #错误码
Message=Message #如果出错,返回错误描述信息
}
2.4 SQLOpen:SQL语句查询
客户端->服务器
{
[Request]
Command=SQLOpen双回车换行SQL语句
}
服务器->客户端
{
[Response]
Command=SQLOpen
Code= Error Code #错误码
Message=Message #如果出错,返回错误描述信息
}
如果查询成功,则开始按照SendFile协议开始下发数据。
2.5 SQLExec:SQL语句执行
客户端->服务器
{
[Request]
Command=SQLExec双回车换行SQL语句
}
服务器->客户端
{
[Response]
Command=SQLExec
Code= Error Code #错误码
Message=Message #如果出错,返回错误描述信息
EffectRow=n #如果执行成功,则下发SQL语句执行影响行数}