2011-09-08 12 views
0

我運行與UDP協議與Netty的(3.2.3版本)事件得到了錯誤的NIO工人

我看到,客戶端和服務器通道註冊細跟NIO工人客戶端路由器,服務器scenaqrio , 但是從服務器返回的響應被分配給錯誤的Worker, (NIODatagramWorker),因此它是一個不同的Selector,並且消息到達錯誤的管道(就像它來自客戶端一樣)。

請指教, 亞伊爾

回答

0

Netty的UDP是有點棘手。 UDP實際上只有一個流水線,所以如果你改變選擇器或流水線內的處理程序,它可能不會產生所需的影響。在Netty用戶組中看看這個UDP Woes link,它有Trustin Lee對此行爲的解釋。

因此,您在使用UDP時的一般情況是:
1)用您的解碼器和編碼器創建一個流水線工廠和流水線。
2)使用散列表或類似的數據結構查找傳入數據並將其路由到正確的會話。
3)寫回時,使用write(data,remoteSocketAddress)方法代替通道的正常寫入方法。