0

我现在正在学习如何使用 Android/Java Socket 类,我需要以特定方式响应远程计算机发送的关闭(实际上是 FIN)。

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

目前,Android 操作系统使用 ACK 响应 FIN,但我还需要在我的应用程序中做一些事情,所以我需要一种方法让我的应用程序收到警报。

提前致谢!

4

1 回答 1

0

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

至于检测另一端关闭它的连接端(这基本上是一个 FIN 是什么),只需从套接字读取即可。如果另一端已关闭其发送端,则 read 将读取 0 个字节(或 return -1,具体取决于您是尝试读取一堆字节还是仅读取一个字节)。

于 2012-06-04T17:41:34.887 回答