社区
通信技术
帖子详情
csoket编程时发送和接收不对应的问题
leekyo
2002-05-08 05:21:05
我在csoket编程时,用一个send()发包过去,有时却触发了两次onreceive()响应,结果是数据包被分成两个包接收了,我想能不能让它一次就接收完,不然我的接收程序不好编,按理说他的接收缓冲应该够大小的,怎么会分包了呢?怎么解决呢?
...全文
59
9
打赏
收藏
csoket编程时发送和接收不对应的问题
我在csoket编程时,用一个send()发包过去,有时却触发了两次onreceive()响应,结果是数据包被分成两个包接收了,我想能不能让它一次就接收完,不然我的接收程序不好编,按理说他的接收缓冲应该够大小的,怎么会分包了呢?怎么解决呢?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
vtable9999
2002-05-09
打赏
举报
回复
对于CSocket来说,如果在OnReceive中,把缓存的数据都读完,即使数据包大于8192,也只有一个OnReceive。但其实在CSocket的OnSockNotify中是有多个FD_READ的,不过都被DoCallBack过滤了。
你可以用CSocketFile、CArchive解决你的问题,也不就像xuying() 说的实现自己的报文格式
xuying
2002-05-08
打赏
举报
回复
TCP协议是流式的,当然会可能触发多次onreceive()。
如果想简单的话,改成UDP协议。它是数据报的,一次接收一个报文。
否则就要自己定义报文格式,用结构等接受。
建议看看<windows网络编程>
leekyo
2002-05-08
打赏
举报
回复
我的程序用的是csocket,在win98下有时17520字节也不分包,有时坟包
Delver
2002-05-08
打赏
举报
回复
解决的方法:改成同步调用recv,如果你的数据包的长度是固定的,是要使用MSG_WAITALL标志即可;但如果数据包是变长的,则需要定义一个包头,在包头中指明包的长度,先用recv接受包头,然后再根据包的长度收取数据部分,当然也需要使用MSG_WAITALL。
vtable9999
2002-05-08
打赏
举报
回复
to game_boy(gamesboy):
数据包大于MTU是会分包,便对于winsock来说,不一定产生多次OnRecevie事件。只有数据包大于8192(winsock默认的缓存大小)时才会有多次OnReceive事件。
vtable9999
2002-05-08
打赏
举报
回复
不清楚你问题的原因,但你可以用CSocketFile加CArchive解决你的问题
PingPingPangPang
2002-05-08
打赏
举报
回复
你发的太大,以太网包长度1600字节,打成IP包,还要去掉IP头和TCP头,剩下1540字节,你如果超过这么多就会分包。
game_boy
2002-05-08
打赏
举报
回复
你发的数据有多大,你的网络MTU有多大呢?如果数据大于网络的MTU,肯定会被分片的
Aydge
2002-05-08
打赏
举报
回复
我不懂编程的,但数据被分包想来是因为传出中的分开了啊
我想假设“一个send()发送的内容会一次被onreceive()接收完”是一个错误。socket每次通讯量有字节数限制的吧
c
soket
应用
ADO 是目前在Windows环境中比较流行的客户端数据库
编程
技术。ADO是建立在OLE DB底层技术之上的高级
编程
接口,因而它兼具有强大的数据处理功能(处理各种不同类型的数据源、分布式的数据处理等等)和极其简单、易用的
编程
接口,因而得到了广泛的应用。而且按微软公司的意图,OLE DB和ADO将逐步取代 ODBC和DAO。
soket
发送
数据包服务器端程序详解
网络
编程
socket
发送
接收
数据包的服务器端代码详解
Socket服务器端与客户端程序.txt
Socket服务器端与客户端程序.txt
ChatRoom_Csocket.rar_Chatroom_csocket_site:www.pudn.com_
soket
_简单
用vc编的简单聊天室,调用c
soket
来实现
利用Csocket类实现网络通信
本文详细的介绍CSocket和CAsyncSocket的使用方法,还以网络聊天室作为实例进行详细的讲解
通信技术
4,387
社区成员
28,918
社区内容
发帖
与我相关
我的任务
通信技术
通信技术相关讨论
复制链接
扫一扫
分享
社区描述
通信技术相关讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章