【问题标题】:sending data packet just before closing socket在关闭套接字之前发送数据包
【发布时间】:2010-05-28 07:58:05
【问题描述】:

在断开客户端之前,服务器想向客户端发送一些信息 - 为什么我(服务器)断开你(客户端)。

如果我向 info 发送数据包并立即关闭客户端套接字,则 closesocket() 返回 -1,如果我使用 linger 选项成功工作 closesocket(),则无法完全发送 info。

我怎样才能完成这个,是否有可能知道套接字缓冲区是空的(意味着我的数据包已全部发送)?

谢谢。

【问题讨论】:

  • 你使用的是TCP还是UDP

标签: c++ sockets asyncsocket


【解决方案1】:

【讨论】:

  • 是的,在 close() 之前执行 shutdown()。我很久以前就注意到,当涉及到有关此的 Windows 文档时,经常会忘记 shutdown()。虽然 linux 文档讨论了重要性。
  • 如果我立即调用 shutdown() 和 closesocket(),两者都返回 -1。异步套接字和 TCP。
  • @xopht,如果您阅读 zed_0xff 的第一个链接,您会发现您必须等待所有内容完成。根据该链接,有两种方法可以做到这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-21
  • 2021-02-26
  • 1970-01-01
  • 2011-09-05
相关资源
最近更新 更多