如何在TCP连接中检测FIN(关闭)

时间:2012-06-04 17:32:31

标签: android

我刚刚学习如何使用Android / Java Socket类,我需要以特定的方式响应远程计算机发送的Close(FIN,真的)。

Socket类似乎不是事件驱动的(http://developer.android.com/reference/java/net/Socket.html),即似乎没有任何 onThis onThat 处理程序,那么什么是了解远程计算机何时发送FIN的最佳方式?

目前Android操作系统通过ACK响应FIN,但我需要在我的应用程序中执行操作,因此我需要一种方法让我的应用程序得到警告。

提前致谢!

1 个答案:

答案 0 :(得分:0)

作为应用程序员,您很少需要甚至关注关于FIN和ACK。它们内置于TCP / IP堆栈中,操作系统将为您完成所有这些工作。为了自己的利益,你的水平太低了;如果你真的想弄乱这些东西,那么你将无法使用Socket - 你需要进入原始套接字等等,这比你准备好的工作更多。 (我不确定Java或Android是否会你这样做。)

至于检测另一端关闭连接的一端(基本上就是FIN),只需从插座中读取即可。如果另一端已关闭其发送端,则读取将读取0个字节(或返回-1,具体取决于您是尝试读取一堆字节还是只读取一个字节。