2012-05-28 32 views
1

我是新來的Netty,我試圖建立一個簡單的SMTP服務器。我遇到的問題是,大多數SMTP服務器命令都是由一條容易在messageReceived()方法中讀取的單一行組成的。但是,在接收到來自客戶端的多個行命令之後,電子郵件的「數據」部分可以包含任意數量的行。這適用於短電子郵件,但較長的電子郵件只能導致部分數據。我的理解是,這是因爲我現在沒有任何幀解碼器。用於協議的Netty幀解碼器,每個請求可變行數?

我遇到的問題是單行命令用換行符分隔,但「數據」部分由任何以「。」結尾的數字行組成。在自己的路線上。

是否可以創建一個適用於單行命令和多行請求以特殊字符序列結尾的幀解碼器?

謝謝!

達斯汀

回答

1

你不一定需要一個解碼器,以完成這兩個步驟。您可以創建兩個解碼器,一個用於標題,一個用於數據部分。完成標題部分後,獲取管道的引用,刪除「標題解碼器」並添加「數據解碼器」。完成後,將管道重置爲原始配置並繼續。

+0

我最初在所有傳入請求共享的處理程序中配置管道。如果我在處理請求時「獲得了對管道的引用」,那麼這個管道是特定於該請求的嗎(這意味着我可以在不影響其他請求的情況下添加/刪除解碼器)? – user1422475

+0

你打賭!不是。不是很棒! – Nicholas

+0

很酷。謝謝你的幫助! – user1422475

相關問題