社区
网络编程
帖子详情
求助,用CAsyncSocket创建套接口,在接收时无法完整接收
cqzj70
2015-05-16 10:12:33
用CAsyncSocket创建套接口,在接收时无法完整接收预计的92个字节,分了三次来接收,但下了断点,但又能完整接收92个字节,考虑到这个情况,我就用sleep函数休眠了200ms,这次增加到了一次能接收67个字节,一次接收25字节,我在增加休眠时间至1000ms就不起任何作用了,我又采用循环接收,但循环一用,整个程序就假死了,求达人解惑
...全文
236
6
打赏
收藏
求助,用CAsyncSocket创建套接口,在接收时无法完整接收
用CAsyncSocket创建套接口,在接收时无法完整接收预计的92个字节,分了三次来接收,但下了断点,但又能完整接收92个字节,考虑到这个情况,我就用sleep函数休眠了200ms,这次增加到了一次能接收67个字节,一次接收25字节,我在增加休眠时间至1000ms就不起任何作用了,我又采用循环接收,但循环一用,整个程序就假死了,求达人解惑
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xian_wwq
2015-06-24
打赏
举报
回复
这就是俗称的数据“粘包”,因为tcp是基于流的, 可能上层一次发出的数据在下层分几次发出,也可能多次发送的数据一次就能收到。 解决方法不是sleep,而是自定义包格式, 比如 包标识+包长度,收到包先拿到业务数据长度, 然后根据这个长度,循环接收,直到完成为止。
shenyi0106
2015-06-24
打赏
举报
回复
MFC的CAsyncSocket这个类的机制有些问题,大部分应用宁愿选择使用原始API,也不要使用这个类。 循环接收是没问题的,假死的原因多半是因为你没有处理好“预计要接收的数据”。
sdhongjun
2015-06-24
打赏
举报
回复
你设置接收缓冲区大小了没有!
笨笨仔
2015-06-24
打赏
举报
回复
“抓包”查看实际数据包的情况,如果数据包正常就是程序有问题。
fullfree
2015-06-18
打赏
举报
回复
听起来你像是用的tcp,tcp是无边界协议,你要自己处理消息边界问题。 这里不太会有人给你讲解完整的协议概念,基本概念还是多靠自己吧
cchvsgame
2015-06-18
打赏
举报
回复
正常,应该加个协议,来解析包
使用MFC
套
接字
CA
sync
Socket
进行网络通信——客户端
MFC使用
CA
sync
Socket
类对网络通信的操作进行了封装简化,使得简单重写几个
接口
函数就可以进行网络通信。资源为客户端程序。 实例使用VS2010编写。
用
CA
sync
Socket
接收
邮件.zip
用
CA
sync
Socket
接收
邮件.zip
MFC下使用
CA
sync
Socket
类建立UDP客户端与服务器.zip
MFC下使用
CA
sync
Socket
类建立UDP客户端与服务器, 发送端
接收
端都已封装好, 可直接借鉴使用
CA
Sync
Socket
客户端服务器框架
完整
代码(VS2010)
用
CA
sync
Socket
开发,可以省去线程管理的工作,用起来就一个字:爽! 本想不要资源分的,因为资源分对我来说并不紧张。但为了让您能够稍稍关注一下,就点了3分。 如果您觉得这个资源对您有帮助,请点一下赞。哦,这里没这个功能,您可以轻点一下自己的额头,说不定我会感受到哦:)
使用MFC
套
接字
CA
sync
Socket
进行网络通信——服务器端
MFC使用
CA
sync
Socket
类对网络通信的操作进行了封装简化,使得简单重写几个
接口
函数就可以进行网络通信,资源为实例工程。 使用VS2010开发。
网络编程
18,356
社区成员
64,214
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章