【问题标题】:IOS 8.0.2 does not send TCP FIN upon socket closeIOS 8.0.2 在套接字关闭时不发送 TCP FIN
【发布时间】:2014-12-15 10:20:35
【问题描述】:

您好,我在 IOS 8.0.2 上偶然发现了一个奇怪的问题

我的应用程序使用 posix api 创建连接到服务器的 tcp 套接字,并通过它发送一些数据。在 和 close() 使用套接字句柄调用并且程序终止。 我已经注意到只有在程序退出后才会将 TCP FIN 数据包发送到服务器。 为了克服这个问题,我必须在套接字上使用 shutdown() 调用。 任何想法为什么会发生这种情况? 也许是因为套接字在一个线程中创建并在另一个线程中关闭?

【问题讨论】:

  • 你有没有解决这个问题或解决方案?
  • 发生这种情况的唯一方法是,如果 FD 已被另一个进程继承,并且两个进程之一仍在运行。

标签: ios multithreading sockets tcp posix


【解决方案1】:

您必须使用关机来启动 FIN 序列。请注意,关闭仅向内核发出命令以启动序列,该序列与调用关闭的进程进一步异步。 close 调用只释放套接字的资源。

【讨论】:

  • 这是不正确的。套接字 FD 上的最终 close() 发送 FIN。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-26
  • 1970-01-01
  • 2016-10-08
  • 2015-02-04
  • 2015-03-12
相关资源
最近更新 更多