将数据发送回客户端,使用Apache米娜UDP

问题描述 投票:0回答:3

我使用的Apache米娜创建一个服务器接受UDP客户端请求。我看过Apache的米纳就UDP Server & UDP Client提供的正式文件。不过,我希望当服务器收到一条消息才知道,我可以写回使用同一个会话(我知道UDP是在网络层连接的,不过,我可以得到远程主机的应用层的IP和端口的UDP客户端),使得UDP客户端接收消息。我知道这是可能是TCP,但我有点困惑UDP。我知道这可能不完全是基于Java的,但基于多种网络层的问题。希望如果有人能明确这对我来说。

java network-programming udp udpclient apache-mina
3个回答
0
投票

我得到的答案一样,以为我也有同感。

UDP是无连接的,但是我可以用我在Apache的米纳同一会话写入会话。我想它作为一个样本也和它的工作。


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");
            }



    }

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);
        }

    }
© www.soinside.com 2019 - 2024. All rights reserved.