Я использую Apache Mina для создания сервера для приема запросов клиентов UDP. Я прочитал официальную документацию, предоставленную Apache Mina, относительно UDP-сервера и UDP-клиента. Однако я хотел знать, когда сервер получает сообщение, могу ли я написать обратно клиенту UDP, используя тот же сеанс (я знаю, что UDP не имеет соединения на сетевом уровне, однако я могу получить IP и ПОРТ удаленного хоста на прикладном уровне ), чтобы UDP-клиент получил сообщение. Я знаю, что это возможно через TCP, но меня немного смущает UDP. Я знаю, что это может быть не совсем вопрос на основе Java, а скорее вопрос на сетевом уровне. Был бы признателен, если бы кто-нибудь мог прояснить это для меня.
Отправьте данные обратно клиенту с UDP, используя Apache Mina
Ответы (2)
Я получил ответ на то же самое и подумал, что поделюсь.
UDP не требует установления соединения, однако я могу использовать тот же сеанс, что и в Apache Mina, для записи в сеанс. Я также попробовал его в качестве образца, и это сработало.
person
Abhishek
schedule
29.04.2011
Попробуйте этот класс обработчика
@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);
}
}
person
Sunil Shakya
schedule
04.02.2019