Что такое «шаблонный адрес» в контексте UDP-трансляций?

Ссылаясь на документы API Java 6 для DatagramSocket класс:

Отправка широковещательных сообщений UDP всегда разрешена для DatagramSocket. Чтобы получать широковещательные пакеты, DatagramSocket должен быть привязан к групповому адресу. В некоторых реализациях широковещательные пакеты также могут быть получены, когда DatagramSocket привязан к более конкретному адресу.

Может ли кто-нибудь сказать мне, что такое «подстановочный адрес»? И действительно ли следующее для прослушивания широковещательных передач UDP:

MulticastSocket socket = new MulticastSocket(new InetSocketAddress(InetAddress.getByName("0.0.0.0"),4445);

person D-Dᴙum    schedule 06.02.2013    source источник
comment
Здесь rhyshaden.com/ipadd.htm есть целый раздел по Wildcards :) Для прослушивания трансляций DatagramSocket с подстановочными знаками должно быть достаточно.   -  person Fildor    schedule 06.02.2013
comment
См. stackoverflow.com/questions/ 5472269/   -  person Carlo Pellegrini    schedule 06.02.2013
comment
Карло, это действительно то, на чем я основывал приведенный выше пример, но мне было интересно, является ли использование 0.0.0.0 «хорошей практикой»...   -  person D-Dᴙum    schedule 06.02.2013
comment
Ну, это единственная практика прослушивания трансляций от любого отправителя.   -  person Fildor    schedule 06.02.2013


Ответы (1)


Адрес подстановочного знака – 0.0.0.0.. Не путайте с широковещательным адресом для всех подсетей, то есть 255.255.255.255.. Правильнее называть его "любым" адресом после INADDR_ANY..

В Java его проще всего использовать, указав null в качестве адреса привязки или вообще опустив параметр, например. new InetSocketAddress(null, 0) или new InetSocketAddress(0) соответственно. Другими словами, это значение по умолчанию при связывании и, следовательно, неявно «хорошая практика».

person user207421    schedule 06.02.2013