我使用的Apache米娜创建一个服务器接受UDP客户端请求。我看过Apache的米纳就UDP Server & UDP Client提供的正式文件。不过,我希望当服务器收到一条消息才知道,我可以写回使用同一个会话(我知道UDP是在网络层连接的,不过,我可以得到远程主机的应用层的IP和端口的UDP客户端),使得UDP客户端接收消息。我知道这是可能是TCP,但我有点困惑UDP。我知道这可能不完全是基于Java的,但基于多种网络层的问题。希望如果有人能明确这对我来说。
我得到的答案一样,以为我也有同感。
UDP是无连接的,但是我可以用我在Apache的米纳同一会话写入会话。我想它作为一个样本也和它的工作。
@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");
}
}
试试这个您的处理程序类
@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);
}
}