Я хочу использовать 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?
Спасибо