Java DatagramSocket прослушивает широковещательный адрес

Я написал простой тестовый класс, который предназначен для прослушивания 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. Что я делаю неправильно? Большое спасибо.

5
задан JoeSlav 29 March 2011 в 12:14
поделиться