Отправьте данные обратно клиенту с UDP, используя Apache Mina

Я использую Apache Mina для создания сервера для приема запросов клиентов UDP. Я прочитал официальную документацию, предоставленную Apache Mina, относительно UDP-сервера и UDP-клиента. Однако я хотел знать, когда сервер получает сообщение, могу ли я написать обратно клиенту UDP, используя тот же сеанс (я знаю, что UDP не имеет соединения на сетевом уровне, однако я могу получить IP и ПОРТ удаленного хоста на прикладном уровне ), чтобы UDP-клиент получил сообщение. Я знаю, что это возможно через TCP, но меня немного смущает UDP. Я знаю, что это может быть не совсем вопрос на основе Java, а скорее вопрос на сетевом уровне. Был бы признателен, если бы кто-нибудь мог прояснить это для меня.


person Abhishek    schedule 27.04.2011    source источник


Ответы (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