Hel*_*rld 6 sockets shutdown zero recv closesocket
我有一个非常讨厌的问题,我在其他论坛上发现了几次,但我找不到合适的解决方案.问题是recv()在连接的最后几个字节返回0.以下是一些背景信息.
我调用send()几次(小块),从客户端调用53个字节.服务器多次调用recv()(4字节请求)并读取49个字节然后返回0(54字节 - 49字节,因此缺少4个字节).
MSDN和一些论坛写的非阻塞套接字:
MSDN还说:
使用带有SD_SEND或SD_BOTH的closesocket或shutdown功能会导致在控制通道上发送RELEASE信号.由于ATM的使用单独的信号和数据信道的,有可能是最后的数据到达目的地之前,导致数据丢失释放信号可以达到远端.一种可能的解决方案是在发送的最后一个数据和ATM套接字的关闭或关闭函数调用之间编程足够的延迟.
这在recv()和send()的例子中被认为:http://msdn.microsoft.com/en-us/library/windows/desktop/ms740121(v = vs.85).aspx
但仍然没有成功,在收到49字节后,我仍然在10%的连接中得到一些中断,90%的连接成功.有任何想法吗?谢谢.
| 归档时间: |
|
| 查看次数: |
28468 次 |
| 最近记录: |