Я написал простой тестовый класс, который предназначен для прослушивания Eth и получения всех UDP пакетов, которые идут на порт 5001
:
public class Main {
public static void main(String[] args) throws SocketException, UnknownHostException, IOException {
DatagramSocket socket = new DatagramSocket(5001, InetAddress.getByName("255.255.255.255"));
socket.setBroadcast(true);
System.out.println("Listen on " + socket.getLocalAddress() + " from " + socket.getInetAddress() + " port " + socket.getBroadcast());
byte[] buf = new byte[512];
DatagramPacket packet = new DatagramPacket(buf, buf.length);
while (true) {
System.out.println("Waiting for data");
socket.receive(packet);
System.out.println("Data received");
}
}
}
Больше не работает. Он распечатывает Ожидание данных
и никогда не продолжает. tcpdump показывает мне, что приходят широковещательные пакеты UDP. Что я делаю неправильно? Большое спасибо.