Запуск UDP-сервера, прослушивающего несколько портов, так же просто, как это
ExecutorService executorService = Executors.newFixedThreadPool(2);
executorService.execute(new UDPServer(9998));
executorService.execute(new UDPServer(9999));
// UDP server implementation
try (DatagramSocket socket = new DatagramSocket(port)) {
System.out.println("Plain UDP server :" + this.port + " name :" + Thread.currentThread().getName());
int numberOfPacketsReceived = 0;
while (true) {
// todo check to stop the server
byte[] buffer = new byte[1024];
DatagramPacket incomingDatagramPacket = new DatagramPacket(buffer, buffer.length);
try {
socket.receive(incomingDatagramPacket);
System.out.println(Thread.currentThread().getName() + ":" + numberOfPacketsReceived++);
} catch (IOException e) {
e.printStackTrace();
continue;
}
}
} catch (SocketException e) {
e.printStackTrace();
}
Можем ли мы создать балансировщик нагрузки, программно прослушивающий порт 9997 и альтернативно пересылающий пакет на порт 9999/9998?
Можем ли мы даже перенаправить трафик, полученный в одном сокете UDP, в другой сокет?