如何通过MINA正确发送数据?

时间:2010-01-07 23:28:36

标签: java sockets nio apache-mina

我正在尝试使用MINA,并且所有示例似乎都将数据写入会话,而不是使用可以反复写入相同类型数据的方法。

我正在尝试使用org.apache.mina.filter.codec.demux.MessageEncoder / MessageDecoderencode / decode消息,这样我就可以在中心位置执行任务在代码中内联它,就像示例那样。

假设我有一个ProtocolCodecFactory(扩展DemuxingProtocolCodecFactory),其LoginRequestEncoder(实现MessageEncoder<LoginRequest>,并通过工厂的addMessageEncoder添加方法)。这是否意味着我不应该使用用户名/密码数据直接调用session.write(),而应该做这样的事情?

LoginRequest request = new LoginRequest(username, password);
new ProtocolCodecFactory()
    .getEncoder(session)
    .encode(session, request, someProtocolEncoderOutput);

我不会撒谎...... MINA似乎应该简化网络流程,我确信它会在我处理它的时候,但我现在很困惑。

1 个答案:

答案 0 :(得分:2)

事实证明,您可以通过IoSession.write()简单地发送请求。这是一个基于我原始问题的简单示例:

LoginRequest request = new LoginRequest(username, password);
session.write(request);