Отправить данные обратно клиенту с помощью UDP с помощью Apache Mina - PullRequest
0 голосов
/ 27 апреля 2011

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

Ответы [ 3 ]

0 голосов
/ 17 июня 2014
@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 голосов
/ 04 февраля 2019

Попробуйте этот класс вашего обработчика

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

    }
0 голосов
/ 29 апреля 2011

Я получил ответ на тот же вопрос и подумал, что поделюсь.

UDP не использует соединение, однако я могу использовать тот же сеанс, что и в Apache Mina, для записи в сеанс. Я попробовал это как образец также, и это работало.

...