本机向本机用socket传输数据时,经常出现客户端向服务端发送数据后,服务端OnRecive事件没有响应。

sim 2004-12-22 02:22:49
碰到一个问题:本机向本机用socket传输数据时,经常出现客户端向服务端发送数据后,服务端OnRecive事件没有响应。怎么回事?
客户端发送成功,服务端就是没有响应,客户端一直再等待服务端的数据接受响应。就是收不到
...全文
93 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhoujianhei 2004-12-23
  • 打赏
  • 举报
回复
引用 ljhnew

这是有TCP/IP协议决定的,特别是“报文的分组发送”,当IP层在传输中,不能把所有的数据一次传送出去,就会将数据包分组,所以就会导致出你的问题。这只是一个比较简单的解释,如果你希望了解根详细的环节,可以参考一下具体的TCP/IP协议。如在我们普通的以太网上,如果你一次发送1M的数据,而以太网上规定一次的传输最大数据为1500左右(MTU),此时,你很可能在一次recv调用时并不会得到所有的1M数据,你可以用flags=MSG_WAITALL来实现,不过一次接收1M的数据,对于一般的TCP/IP协议栈来说,比较难以处理,所以,你可以采用循环多次调用(最好是block模式)来得到数据。
对于发送数据包来说,也是同样道理,如果你一次发送的数据超过了协议栈的缓冲(特别是在单片机嵌入式系统中),那么发送调用就会给你返回一个实际发送出的数据或直接返回失败。
windcsn 2004-12-22
  • 打赏
  • 举报
回复
你使用什么协议?
把你程序贴出来一看
zhoujianhei 2004-12-22
  • 打赏
  • 举报
回复
关注

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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