我正在开发一个中间件应用程序,它创建并维护与多个服务器的TCP / IP连接。如果应用程序检测到连接已丢失,它将尝试重新连接计时器,直到重新建立连接。
应用程序在非阻塞模式下使用java.nio.SocketChannel对象,Selector / SelectionKey用于处理套接字事件。
一旦连接丢失,最好丢弃当前的SocketChannel对象,并创建一个新的重新连接(也获得一个新的SelectionKey),或重用相同的SocketChannel和SelectionKey(我猜这是无效的,直到连接再次建立)?
答案 0 :(得分:2)
你必须扔掉它。当连接丢失时,您必须关闭终端上的SocketChannel
以正确清理连接。如果你想尝试重新连接,那么就完全按照你第一次做的那样做(createSocket,make non blocking,init connection等)。