使用Apache Mina使用UDP将数据发送回客户端

时间:2011-04-27 13:27:36

标签: java network-programming udp udpclient apache-mina

我正在使用Apache Mina创建一个服务器来接受UDP客户端请求。我已阅读Apache Mina提供的关于UDP Server & UDP Client的官方文档。但是,我想知道服务器何时收到消息,我可以使用相同的会话写回UDP客户端(我知道UDP在网络层是无连接的,但我可以在应用层获取远程主机的IP和PORT )以便UDP客户端接收消息。我知道这可能是TCP,但我对UDP有点困惑。我知道这可能不是基于Java的,而是基于网络层的更多问题。如果有人能为我清楚这一点,我将不胜感激。

3 个答案:

答案 0 :(得分:0)

我得到了相同的答案,并认为我会分享。

UDP是无连接的,但我可以使用Apache Mina中的相同会话来写入会话。我也把它作为一个样本试了一下,然后就可以了。

答案 1 :(得分:0)

@Override
    public void messageReceived(IoSession session, Object message) throws Exception {

            for (int i = 0; i < session.getService().getManagedSessions().values().toArray().length; i++) {

                IoSession aSession=(IoSession) session.getService().getManagedSessions().values().toArray()[i];
                aSession.write("Any Message");
            }



    }

答案 2 :(得分:0)

尝试使用您的处理程序类

@Override
public void messageReceived(IoSession session, Object message) throws Exception {
        // response every time get data 
        byte[] b = "Received".getBytes();
        final IoBuffer responsebuffer = IoBuffer.allocate(b.length);
        responsebuffer.put(b);
        responsebuffer.flip();
        session.write(responsebuffer);
        SocketAddress remoteAddress = session.getRemoteAddress();

        if (message instanceof IoBuffer) {
            IoBuffer buffer = (IoBuffer) message;
            final CharsetDecoder decoder = getCharsetDecoder(session);
            String receivedMsg = buffer.getString(decoder);
            String data = remoteAddress + " Received: " + receivedMsg;
            server.append(data);
        }

    }