send()调用返回时是否已经全部发送完成?

Sodar 2000-09-08 08:34:00
我说得是在阻塞模式下。如果调用send()函数发送一个很大的数据包,能否在函数返回的时候保证已经全部发送完成了?
谢谢
...全文
178 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Sodar 2000-09-11
  • 打赏
  • 举报
回复
谢谢各位,不过我还没有实验。先把分送上。
FengSC 2000-09-08
  • 打赏
  • 举报
回复
那要看你的"发完"是指什么意识如果是指本地已经送出,那是对的;如果是指对方接收到,那不一定正确。
nieyongxin 2000-09-08
  • 打赏
  • 举报
回复
FengSC说的是不对的,Gangster说的对了一半,
udp只管向外发送,对方有没有收到,它是不管的,它的优点是发送效率高。
TCP是可靠的,阻塞方式下必须等对方全部收到才会返回TRUE。
建议不要使用阻塞方式,如果对方没收到,则必须等TIMEOUT才能进行下一步操作,而之期间
则象假死机一样,建议使用消息或事件机制。
Gangster 2000-09-08
  • 打赏
  • 举报
回复
如果函数返回,有两种情况,一是有错,会马上返回,返回直是SOCKET_ERROR用WSAGetLastError()可得到具体错误。
二是正确返回,那数据就全发了,如果你用tcp那对方能受到,用udp则不一定
playpcgame 2000-09-08
  • 打赏
  • 举报
回复
FengSC说的是对的

4,356

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧