哪位高手给我解释一下(关于winsock编程的)

henryxuv 2004-12-24 02:53:50
我想知道,我使用TCP这种流协议建立socket后,传输数据。send有没有可能将发送缓冲区中的内容没有发送完。recv是不是一次就肯定能够接受完,发送方传送过来的数据。我需不需要根据返回值进行判断。还有就是假如说我的recv函数陷入阻塞,有没有什么函数能够结束阻塞的状态。急,谢了
...全文
56 点赞 收藏 5
写回复
5 条回复
ParadiseZoneHappy 2004年12月24日
up
回复 点赞
ParadiseZoneHappy 2004年12月24日
用CSocket编程时,把CSocket的创建和消息的响应都放在界面线程中,把数据的接收放在另外的
工作线程中,那会不会当工作线程中数据还没有接收完时在界面线程又马上收到CSocket::OnReceive()
消息,从而造成混乱?
回复 点赞
younggle 2004年12月24日
HunterForPig(留着口水的猪) 说的好。
回复 点赞
HunterForPig 2004年12月24日
只要网络正常,send会将缓冲区中的内容发送完
recv是不是一次就肯定能够接受完
对缓冲区中的内容,如果超过8k(系统默认,可改变)send就会分块处理,
此时recv就要对每一次send作接收。

如果recv阻塞
没有可结束阻塞状态的函数,如果拍程序被阻塞,建议开个线程把recv的操
作放在里面!
回复 点赞
tgwang 2004年12月24日
send有可能将发送缓冲区中的内容没有发送完;recv不一定一次就能够接受完;需要判断
回复 点赞
发动态
发帖子
VC/MFC
创建于2007-09-28

7898

社区成员

42.1w+

社区内容

VC/MFC相关问题讨论
社区公告
暂无公告