主页 > 任九开奖结果奖金查询 >
tcp通信中建立连接后服务端先休眠20s等待休眠唤醒后接收不到客户
发布日期:2019-08-10 09:41   来源:未知   阅读:

  tcp通信中,建立连接后,服务端先休眠20s,等待休眠唤醒后,接收不到客户端发送的全部消息?

  tcp通信中,建立连接后,服务端先休眠20s,等待休眠唤醒后,接收不到客户端发送的全部消息?

  简单点说就是,当我客户端连续向sockfd文件描述符中write/send数据信息时,客户端并不能read/recv到全部数据,一般只接受休眠前的第一条...

  简单点说就是,当我客户端连续向sockfd文件描述符中write/send数据信息时,客户端并不能read/recv到全部数据,一般只接受休眠前的第一条

  1、你打开的socket是udp,udp是不会确保消息送达目的端的,但是也不会出现每次都只接收到休眠前的第一条消息的情况。而且你描述的问题并不是udp通信,是tcp通信。

  2、你打开的socket是tcp,这种情况下,生肖开奖结果查询网址,两端的主机要先进行三次握手,之后才能传输信息

  。三次握手之后,通信双方共同维持连接。一旦其中一方发送数据时发现,发送出去的数据无法及时收到对应的ack导致timeout,会进行一个延迟重发的操作,一旦延迟重发次数达到上限,便会发出终止数据包结束会话。很明显,服务端休眠时无法完成三次握手操作,这时客户端会终止此次tcp连接,转为不停发送探测数据包探测目标主机是否可达。这个时候发送的数据自然无法被接收到。

  3、缓存设置的问题,接着上面第三种可能性,当你发送数据的时候,实际上是先写入socket底层buff空间。然后将数据打包发出去。如果前面的数据没有及时发送出去导致buff溢出,后面再投向socket的信息会被丢掉。