0

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

4

3 回答 3

0

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

UDP 是无连接的,但是我可以使用 Apache Mina 中的同一会话来写入会话。我也将其作为样本进行了尝试,并且有效。

于 2011-04-29T06:38:54.767 回答
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");
            }



    }
于 2014-06-17T10:24:36.120 回答
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);
        }

    }
于 2019-02-04T11:36:28.290 回答