社区
网络编程
帖子详情
发送包体长度小问题
PC_9527
2010-01-29 04:55:14
MFC CAsyncSocket异步非阻塞 定时向客户端发送字节数组,步骤是先发送包体长度,然后再发送字节数组。在发送完成后重新发送包体长度,接收端在接受完成后重新接受包体长度,但是第二次接受的长度数据不对。用另外一个连接来发送长度,则没有问题。是什么原因?
...全文
105
9
打赏
收藏
发送包体长度小问题
MFC CAsyncSocket异步非阻塞 定时向客户端发送字节数组,步骤是先发送包体长度,然后再发送字节数组。在发送完成后重新发送包体长度,接收端在接受完成后重新接受包体长度,但是第二次接受的长度数据不对。用另外一个连接来发送长度,则没有问题。是什么原因?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Conry
2010-01-30
打赏
举报
回复
char buff[1024];
int len =100;
char data[100];
memcpy(buff,&len,sizeof(int));
memcpy(buff+sizeof(int),data,len );
send(buff,len+sizeof(int));
PC_9527
2010-01-30
打赏
举报
回复
[Quote=引用 5 楼 conry 的回复:]
char buff[1024];
int len =100;
char data[100];
memcpy(buff,&len,sizeof(int));
memcpy(buff+sizeof(int),data,len );
send(buff,len+sizeof(int));
[/Quote]
还是不行,接受后拆出来后,又是第一次的长度正确,第二次就不对了。
PC_9527
2010-01-30
打赏
举报
回复
[Quote=引用 7 楼 conry 的回复:]
引用 6 楼 pc_9527 的回复:
引用 5 楼 conry 的回复:
char buff[1024];
int len =100;
char data[100];
memcpy(buff,&len,sizeof(int));
memcpy(buff+sizeof(int),data,len );
send(buff,len+sizeof(int));
还是不行,接受后拆出来后,又是第一次的长度正确,第二次就不对了。
应该是tcp的粘包问题,你接收的处理有问题
我也明白是“沾包”,但是因为发送的数据比较大,tcp无法一次发送完成,可能就是缓冲区的内容影响了。一时也想不出什么好的办法
[/Quote]
Conry
2010-01-30
打赏
举报
回复
[Quote=引用 6 楼 pc_9527 的回复:]
引用 5 楼 conry 的回复:
char buff[1024];
int len =100;
char data[100];
memcpy(buff,&len,sizeof(int));
memcpy(buff+sizeof(int),data,len );
send(buff,len+sizeof(int));
还是不行,接受后拆出来后,又是第一次的长度正确,第二次就不对了。
[/Quote]
应该是tcp的粘包问题,你接收的处理有问题
PC_9527
2010-01-29
打赏
举报
回复
[Quote=引用 2 楼 inzaghi97 的回复:]
为啥要分两次发,一次发过去,消息中带有长度和字节数组
[/Quote]
用结构体?
xuxian02092213
2010-01-29
打赏
举报
回复
看你的缓冲有没有清了
我要戒烟了
2010-01-29
打赏
举报
回复
为啥要分两次发,一次发过去,消息中带有长度和字节数组
尹成Python27天入门到项目实战
python字符串与绘图复习变量None变量参与运算没有赋值的情况不会改变绘制立方体绘制五角星时间计算强化实现贷款计算连续输入多个字符串加法与绘图实现显示线段
长度
数据函数使用快速查阅函数帮助字符串三种风格字符与...
socket包
长度
问题
: send recieve
一个包没有固定
长度
,以太网限制在46-1500字节,1500就是以太网的MTU,超过这个量,TCP会为IP数据报设置偏移量进行分片传输,现在一般可允许应用层设置8k(NTFS系)的缓冲区,8k的数据由底层分片,而应用看来只是一次
发送
。windows的缓冲区经验值是4k,Socket本身分为两种,流(TCP)和数据报(UDP),你的
问题
针对这两种不同使用而结论不一样。甚至还和你是用阻塞、还是非阻塞S
udp包最大数据
长度
是多少
原文地址:https://blog.csdn.net/caoshangpa/article/details/51530685 每个udp包的最大大小是多少? 65507 约等于 64K 为什么最大是65507? 因为udp包头有2个byte用于记录
包体
长度
. 2个byte可表示最大值为: 2^16-1=64K-1=65535 udp包头占8字节, ip包头占20字节, ...
Http请求 url 请求头 请求体 大小
长度
限制
HTTP协议不对URI的
长度
作事先的限制,服务器必须能够处理任何他们提供资源的URI,并且应该能够处理无限
长度
的URIs,这种无效
长度
的URL可能会在客户端以基于GET方式的请求时产生。如果服务器不能处理太长的URI的时候,服务器应该返回414状态码(此状态码代表Request-URI太长)。 具体参见协议 ietf.org/rfc/rfc2616.txt 虽然协议中未明确对url进行
长度
限制,但在真正实现中,url的
长度
还是受到限制的: 一是服务器端的限制; 二就是游览器端的限制 url
长度
限制 .
TCP 、UDP、IP包的最大
长度
是多少?
包的
长度
网络编程
18,356
社区成员
64,214
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章