关闭套接字如何影响对方的侧读
How does closing a socket affects other's side read
例如,我们有一个服务器-客户端应用程序。如果服务器在套接字上写入消息,然后在客户端读取之前将其关闭。客户端是否能够读取消息?
"如果服务器在套接字上写入消息,然后在客户端读取之前将其关闭。客户端是否能够阅读消息?
是的。客户端将获取在关闭套接字的 FIN 数据包之前发送的数据。
此行为是特定于实现的,通常,您不应假设客户端能够读取消息,Linux 手册中的close(2)
说:
Be sure to use shutdown(2) to shut down all parts the connection before closing the socket.
如果要确保客户端已读取该消息,请使该客户端在应用程序协议中确认该操作。
当您通过套接字发送数据,然后关闭同一套接字时,无法保证内核已将其内部缓冲区清空到网络,甚至无法这样做(最终网络条件有问题(。
相关文章:
- 当套接字连接断开时检测C/C++Unix
- 通过套接字[TCP]传输数据 如何在C / C ++中打包多个整数并使用send() recv()传输数据
- 如何通过套接字将文本文件的内容从服务器发送到客户端
- 如何在C/C++中用FD_set Unix设置套接字文件描述符
- 套接字读取后,我在缓冲区中看到意外输入
- 如何在CPP中创建应该在Windows和Linux上运行的套接字?
- 我可以与 python 服务器而不是 c++ 客户端建立 tcp/ip 套接字吗?
- 套接字连接"Operation not permitted"错误,甚至使用升压/平发器根.cpp
- WINAPI 注册应用程序重新启动时不清除打开的套接字
- (Winsock) UDP 接收工作正常,但同一套接字的发送失败
- MSG_WAITALL的套接字发送得到了 22 EINVAL
- C++套接字客户端到 Python 服务器未创建连接
- 在不知道套接字的情况下关闭网络连接
- C++套接字对不读/写父/子
- 非更新套接字消息
- SIGSEGV on Boost UDP 套接字关闭 - tcache_get at malloc.c.
- 将"uint8_t"(从套接字读取)隐式转换为"char"安全吗
- 当对套接字 send() 的同步调用由于连接另一端丢失而被阻止时,如何恢复?
- TCP 零窗口和对其他套接字的影响
- 关闭套接字如何影响对方的侧读