Есть ли способ отправить UDP-пакет внутри локальной сети, чтобы каждый компьютер получил его? (Конечно, никаких гарантий, потому что его UDP).Отправка пакета UDP всем в локальной сети?
Нравится, посылая запрос «Привет, кто-нибудь там?» а затем прислушиваться к ответу?
У меня нет проблемы с отправкой и получением, просто хочу знать, если есть способ, кроме пробуя каждый IP-адрес возможный ...
Edit: Это то, что я использую в данный момент:
...
multicastSocket = new MulticastSocket();
multicastSocket.setBroadcast(true);
broadcastGroup = InetAddress.getByName("255.255.255.255");
// multicastSocket.joinGroup(broadcastGroup);
...
Последняя строка кода закомментирована, поскольку она выдает исключение. Теперь я прочитал, что отправка пакета в 255.255.255.255 «устарела с года» и, скорее всего, не будет работать во многих локальных сетях. Кроме того, я не уверен, что мне понадобится MulticastSocket
для этого, или если нормальный DatagramSocket
будет работать. Но в любом случае, каким будет предпочтительный способ отправки UDP-трансляции в наши дни?
255.255.255.255 не является допустимым адресом групповой адресации, и вы не присоединяетесь к многоадресным группам, чтобы отправлять их, но получать от них. Вам нужно решить, что именно вы делаете: трансляцию или многоадресную рассылку. Это не одно и то же. – EJP
Я всегда стараюсь найти самое простое решение. Если вы находитесь в подсети класса C, я бы предложил просто отправить одноадресную рассылку всем 253 другим хостам в той же подсети. Черт, даже для класса B, почему бы и нет? Это всего лишь около 65 тысяч мест. – wookie919
@ wookie919 «Почему бы и нет»? Потому что маршрутизатор, вероятно, не поддержит его? – EJP