通常,您有一個綁定的tcp端口以及這些端口上的多個連接。至少通常有更多的連接作爲綁定端口。我的情況不同:我想綁定很多端口,通常沒有(或至少很少)連接。將NIO與IO混合使用
所以我想用NIO來接受傳入的連接。
但是,我需要將接受的連接傳遞給現有的jsch ssh庫。這需要IO套接字而不是NIO套接字,它會爲每個連接產生一個(或兩個)線程。但這對我來說很好。現在
,我認爲下面的線將帶來非常相同的結果:
Socket a = serverSocketChannel.accept().socket();
Socket b = serverSocketChannel.socket().accept();
SocketChannel channel = serverSocketChannel.accept();
channel.configureBlocking(true);
Socket c = channel.socket();
Socket d = serverSocket.accept();
但是返回插槽的getInputStream()
和getOutputStream()
功能似乎工作不同。只有當使用最後一次調用接受套接字時,jsch才能使用它。在前三種情況下,它失敗了(我很抱歉:我不知道爲什麼)。
那麼有沒有辦法將轉換成這樣的socket?
感謝您的回答,但這不適合我(見第二個答案)。此外,該錯誤是在5.0-beta,不應該再用了... – 2010-04-01 17:24:22
@Steffen:這個錯誤在Java 6中仍然存在。 – 2010-04-01 18:44:44
你鏈接的* single * bug不是'bug',並且沒有任何東西處理這個問題。 – EJP 2017-09-28 10:14:20