1

我有以下Java代码:

Socket s = new Socket();
s.connect(mySockAddr, myTimeout);

假设我不使用套接字,我需要在服务器端连接关闭(FINRST数据包)发生时立即检测它。
例如,虽然一个线程检查套接字状态,或者拦截FIN/RST数据包......

我怎样才能检测到它?
我已经尝试过printWriter.checkError(), socket.isConnected(),socket.isClosed()方法,但没有任何效果。

4

1 回答 1

3

我知道检测对方是否关闭连接的唯一方法是尝试从输入流中读取。从关闭的套接字读取将返回 -1。那是您的通知,将不再有要阅读的内容。

至于其他功能,s.isConnected()告诉你是否成功地connect()编辑了套接字,并s.isClosed()告诉你是否关闭了它。它没有告诉你对方做了什么。

于 2013-04-12T15:45:31.513 回答