2012-05-28 27 views
1

我是新来的Netty,我试图建立一个简单的SMTP服务器。我遇到的问题是,大多数SMTP服务器命令都是由一条容易在messageReceived()方法中读取的单一行组成的。但是,在接收到来自客户端的多个行命令之后,电子邮件的“数据”部分可以包含任意数量的行。这适用于短电子邮件,但较长的电子邮件只能导致部分数据。我的理解是,这是因为我现在没有任何帧解码器。用于协议的Netty帧解码器,每个请求可变行数?

我遇到的问题是单行命令用换行符分隔,但“数据”部分由任何以“。”结尾的数字行组成。在自己的路线上。

是否可以创建一个适用于单行命令和多行请求以特殊字符序列结尾的帧解码器?

谢谢!

达斯汀

回答

1

你不一定需要一个解码器,以完成这两个步骤。您可以创建两个解码器,一个用于标题,一个用于数据部分。完成标题部分后,获取管道的引用,删除“标题解码器”并添加“数据解码器”。完成后,将管道重置为原始配置并继续。

+0

我最初在所有传入请求共享的处理程序中配置管道。如果我在处理请求时“获得了对管道的引用”,那么这个管道是特定于该请求的吗(这意味着我可以在不影响其他请求的情况下添加/删除解码器)? – user1422475

+0

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

+0

很酷。谢谢你的帮助! – user1422475

相关问题