私はNettyが新しく、どのように動作しているのか理解しようとしています。Netty:MessageToMessageEncoderとByteBufへの変換
localhost上でテスト用の単純なSMTPサーバーを作成したいのですが、エンコーダの仕組みを理解している小さな問題があります。
まず、私が達成したいことはここにあります。
- クライアントは、25ポート上のサーバーに接続している -
OK
- Serverは、このメッセージを送信します。
220 localhost Test \r\n
- クライアントは
2
で送信されたメッセージを受信して、私の問題がポイントであるHELO whatever
に返信2
私は使用しようとしていますMessageToMessageEncoder
out.add("220 localhost Test \r\n");
は何もしないされ、エラーが返されず、クライアントが
HELO
メッセージを送信
3
を指すように進んでいません
@Override
protected void encode(ChannelHandlerContext ctx, Object msg, List<Object> out) throws Exception {
//...
out.add("220 localhost test \r\n");
}
。だから私の質問は、私はいつもByteBuf
にメッセージをエンコードする必要がありますされ
は、しかし、私が変更した場合、この
ByteBuf buff = ByteBufUtil.writeUtf8(ctx.alloc(), "220 localhost Test \r\n");
out.add(buff);
にすべてが素晴らしい実行されていることと、クライアントはHELO
メッセージ
を送信していますか? 公式の文書のために私はこれを求めています:http://netty.io/4.1/api/io/netty/handler/codec/MessageToMessageEncoder.html 私はこのようなものを見ますout.add(message.toString());
をだから、最終的に送信されるメッセージのために、それはByteBufなければなりませんか? –