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