2012-01-21 64 views
0

假設一個簡單的netty服務器:Netty:連接兩個通道

當第一個客戶端連接時,我們會記住該通道。如果第二個客戶端連接,我們希望將它與第一個通道連接起來,這樣寫在第一個通道上的所有內容都將寫入第二個客戶端,反之亦然。

最後,這個簡單的應用程序就像是一個telnet到telnet聊天。

回答

2

將兩個通道添加到DefaultChannelGroup並存儲它的引用。然後,當您想寫入通道時,只需調用ChannelGroup上的write(...)方法即可。

+0

寫在ChannelGroup上的消息是不是發送給組中的所有客戶端,甚至是發送給調用者? – Dennis

+0

是的,它會將消息發送給雙方。 –

0

據我所知,連接兩個插座通道沒有海峽方式。 (但有辦法連接非套接字通道,使用LocalChannel的兩個本地通道,使用IOStreamChannel的任意輸入輸出流)。

我認爲這個問題可以通過在管道中添加/移除通道到ChannelConnected(),channelDisconnected()上的哈希表以及messageReceived()中的橋通道處理程序(擴展SimpleChannelHandler)正確的對等通道並將消息寫入它。