|

分享源码
界面截图: |
- |
是否带模块: |
- |
备注说明: |
- |
tcp协议 大家接触了不少,但问题是,大部分都不支持分包组包。我整理出 分包组包通用 源码。用到了映射文件类来整合数据,速度刚杠的。调用举例如下:
客户端发送大数据,先组包:
t2:tcp数据类 (模块中的类)
.版本 2
.如果真 (初始化1 ≠ 0 且 客户连接1 ≠ 0)
a = 取重复文本 (9001, “测试1”) + “--over”
' 输出调试文本 (取文本长度 (a), 取字节集长度 (到字节集 (a)))
客户发送大数据 (客户连接1, 到字节集 (a))‘’客户连接是 连接服务器后的返回值
返回 ()
.版本 2
.子程序 客户发送大数据, 逻辑型
.参数 客户连接
.参数 a, 字节集
.局部变量 局部_数据指针, 整数型
.局部变量 局部_数据长度, 整数型
.局部变量 局部_返回长度, 整数型
a = t2.封包处理 (a) ' + { 0 }
局部_数据指针 = _lstrcpyn_字节集 (a, a, 0)
局部_数据长度 = 取字节集长度 (a)
.判断循环首 (真)
局部_返回长度 = c.客户_写 (客户连接, 局部_数据指针, 局部_数据长度)‘’‘循环发送
输出调试文本 (“客户发送长度:” + 到文本 (局部_返回长度))
.如果 (局部_返回长度 = 0)
返回 (假) ' '失败
.否则
.如果结束
局部_数据指针 = 局部_数据指针 + 局部_返回长度
局部_数据长度 = 局部_数据长度 - 局部_返回长度
.如果 (局部_数据长度 ≤ 0)
返回 (真)
.否则
.如果结束
.判断循环尾 ()
返回 (真)
服务端:
t1:tcp数据类。
在收到数据回调事件中 先读取,然后组装
.版本 2
.判断 (事件类型 = #数据到达)
接收 = 取空白字节集 (数据长度)
' 输出调试文本 (“服务器收到长度:” + 到文本 (数据长度))
s.服务器_读 (数据地址, _lstrcpyn_字节集 (接收, 接收, 0), 数据长度)
' 输出调试文本 (“服务器收到:” + 到文本 (接收))
t1.数据处理 (&服务器数据处理事件, 事件类型, , , 数据地址, 取字节集指针 (接收), 数据长度, , , , )‘ ’ 在 服务器数据处理事件 中 自动组包。
返回 ()
.版本 2
.子程序 服务器数据处理事件
.参数 消息类型, 整数型
.参数 服务端句柄
.参数 客户句柄, 整数型
.参数 数据地址, 整数型
.参数 实际数据地址, 整数型, , 实际数据地址
.参数 数据长度, 整数型
.参数 备用1
.参数 备用2
.参数 备用3
.参数 备用4
.局部变量 接收, 字节集
.如果 (选择框1.选中)
日志 (“服务器收到(” + 到文本 (数据长度) + “):” + 到文本 (指针到字节集 (实际数据地址, 数据长度)))
返回 ()
.否则
.如果结束
接收 = 取重复字节集 (2000, 到字节集 (“dad大概哈根达斯哈根达斯要”)) + 到字节集 (到文本 (取随机数 (1, 2000)) + “-over”) ' ’‘’取字节集左边 (接收 + { 24, 232 }, 80)
服务器发送大数据 (数据地址, 接收)‘’‘再发送回去
高性能 cs 程序,快速传递文件。可以来交流。 3琪酒灵四九四八Ⅱ。
只是例子,大家用到自己的程序中 作个参考。
分包组包2.zip
(1.45 MB, 下载次数: 143)
补充内容 (2020-10-18 20:05):
有不少网友反映 少了个模块, 放在13楼了。大家重新下载吧 |
评分
-
查看全部评分
|