UDP Broadcaster через Mina Framework - PullRequest
0 голосов
/ 01 июля 2019

Я хочу использовать Mina Framework для создания класса UDP Broadcast. Просто глупое приложение, которое каждые x секунд отправляет одно и то же сообщение через UDP на определенный порт. Можете ли вы сказать мне, если это возможно с MINA? Основываясь на нижнем подходе, кажется, что это не работает. Или неправильный подход, основанный на NioAcceptor?

Мой код (как минимальный пример) пока:

public static void main(String[] args) {
    NioDatagramAcceptor acceptor = new NioDatagramAcceptor();
    acceptor.setHandler(new ServerHandler());
    acceptor.getFilterChain().addLast("codec", new LoggingFilter());
    DatagramSessionConfig dcfg = acceptor.getSessionConfig();
    dcfg.setReuseAddress(true);
    dcfg.setBroadcast(true);
    acceptor.bind(new InetSocketAddress("localhost", 4321));

    while (true) {
        acceptor.broadcast("my message.");
        log.info("msg send.");

        try { Thread.sleep(1000); }
        catch (Exception e) {}
    }
}

и мой ServerHandler почти пуст:

public class ServerHandler extends IoHandlerAdapter {

    public void exceptionCaught(IoSession session, Throwable cause) throws Exception {
        log.warn("Exception", (Exception)cause);
    }

    public void messageSent(IoSession session, Object message) throws Exception 
    {
        log.info("Message send: " + (String)message);
    }

    public void sessionClosed(IoSession session) throws Exception {
        log.info("sessionClosed");
    }

    public void sessionCreated(IoSession session) throws Exception {
        log.info("sessionCreated");
    }

    public void sessionOpened(IoSession session) throws Exception {
        System.out.println("sessionOpened");
    }   
}

Обновление: как можно установить конкретный широковещательный адрес (или несколько)?

Есть какой-нибудь совет, что я забыл или что я сделал не так в этом случае UDP?

Спасибо

...