Java NIO套接字应用程序:重用SocketChannel或丢弃丢失的连接



我正在开发一个中间件应用程序,该应用程序创建并维护与多个服务器的TCP/IP连接。如果应用程序检测到连接已丢失,它将尝试在计时器上重新连接,直到重新建立连接。

该应用程序在非阻塞模式下使用java.nio.SocketChannel对象,并使用Selector/SelectionKey来处理套接字事件。

一旦连接丢失,最好丢弃当前的SocketChannel对象,创建一个新的对象来重新连接(同时获得一个新SelectionKey),还是重用相同的SocketChannel和SelectionKey(我想在再次建立连接之前,这是无效的)?

你必须把它扔掉。当连接丢失时,必须关闭端部的SocketChannel才能正确清理连接。如果你想尝试重新连接,那么就按照你第一次做的去做(createSocket、make non-blocking、init connection等)。

最新更新