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

sim 2004-12-22 02:22:49
碰到一个问题:本机向本机用socket传输数据时,经常出现客户端向服务端发送数据后,服务端OnRecive事件没有响应。怎么回事?
客户端发送成功,服务端就是没有响应,客户端一直再等待服务端的数据接受响应。就是收不到
...全文
68 点赞 收藏 3
写回复
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日
关注
回复 点赞
发动态
发帖子
网络编程
创建于2007-09-28

7878

社区成员

6.4w+

社区内容

VC/MFC 网络编程
社区公告
暂无公告