0
我正在开发一个中间件应用程序,该应用程序创建并维护与多个服务器的TCP/IP连接。如果应用程序检测到连接已丢失,它将尝试重新连接定时器,直到连接重新建立。Java NIO套接字应用程序:重用SocketChannel还是丢失连接?
应用程序在非阻塞模式下使用java.nio.SocketChannel对象,使用Selector/SelectionKey来处理套接字事件。
一旦连接丢失,最好扔掉当前的SocketChannel对象,并创建一个新的重新连接(也得到一个新的SelectionKey),或重用相同的SocketChannel和SelectionKey(我猜是无效的直到连接再次建立)?
简单地说:你无法重用SocketChanngel – bestsss 2012-02-02 21:29:01
注意到。谢谢!让我感到惊讶,但即使连接丢失,SocketChannel仍会报告isConnected()。 – 2012-02-02 22:34:48
除非关闭,否则只要建立了连接,isConnected()将返回true。获得异常或接收EOF(-1)后,关闭该通道。 – bestsss 2012-02-02 23:03:35