首页
社区
课程
招聘
[旧帖] 重金!socket 如何解决收发数据长度不固定问题 0.00雪花
发表于: 2016-12-17 17:16 3249

[旧帖] 重金!socket 如何解决收发数据长度不固定问题 0.00雪花

2016-12-17 17:16
3249
本意是写一个项目,socket连接后,服务端向客户端发送一些数据,但是数据长度均不固定,如何让客户端接收数据的时候,知道接收到的数据长度?
使用的是tcp协议 c++语言 编译器vs2008
使用的是完成端口接收通知
至少在发送端 发送的数据中 想办法表明数据长度 接收端收到数据后 识别数据长度 然后接收完整长度数据!

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 1136
活跃值: (683)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
服务端先发送长度给客户端,客户端分配内存接收指定长度的数据
2016-12-17 17:28
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
这样的话 就得分开发送数据了
我想要的是 直接发送一条数据,数据中包含长度,然后接收端接收之后 来识别数据长度 再来接收余下的数据
2016-12-17 17:35
0
雪    币: 261
活跃值: (51)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
那就缓存前两个字节空出来放长度呗……
不就能一次发了么
而且一次发和两次发本来就没什么区别
毕竟有nagle
2016-12-17 17:41
0
雪    币: 8188
活跃值: (2772)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
5
还得处理分包和裂包.
2016-12-17 18:41
0
雪    币: 144
活跃值: (31)
能力值: ( LV8,RANK:140 )
在线值:
发帖
回帖
粉丝
6
前4个字节放长度后面变长char[1],服务器收的时候先拿四个字节看长度再收剩下的字节。
2016-12-17 23:18
0
雪    币: 256
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
如果不想2楼那种方法,可以像HTTP协议那样,不需要发送长度,在数据尾加上\r\n\r\n标示,然后接收端接收之后判断如果是\r\n\r\n就表示数据接收完毕了。
2016-12-17 23:58
0
雪    币: 1305
活跃值: (213)
能力值: ( LV5,RANK:75 )
在线值:
发帖
回帖
粉丝
8
我也想知道,iocp,怎么处理这个,比较好
2016-12-18 11:55
0
游客
登录 | 注册 方可回帖
返回
//