关闭插座如何影响他人的阅读

时间:2019-05-30 13:09:55

标签: c++ c sockets tcp

例如,我们有一个服务器-客户端应用程序。如果服务器在套接字上写了一条消息,然后在读取客户端之前将其关闭。客户端可以阅读邮件吗?

2 个答案:

答案 0 :(得分:5)

“如果服务器在套接字上写入一条消息,然后在读取客户机之前将其关闭。客户机将能够读取该消息吗?”

是的。客户端将获得在关闭套接字的FIN数据包之前发送的数据。

答案 1 :(得分:-3)

此行为是特定于实现的,通常,您不应该假定客户端能够读取消息,Linux手册中的close(2)说:

Be sure to use shutdown(2) to shut down all parts the connection before closing the socket.

如果要确保客户端已阅读该消息,请让该客户端确认您的应用程序协议中的操作。

当您通过套接字发送数据,然后关闭该套接字时,无法保证内核已将其内部缓冲区清空到网络,甚至不能这样做(最终有问题的网络状况)。

相关问题