Как широковещательно передать сообщение в сети?

Я работаю над клиент-серверным приложением, записанным в C. Я хочу широковещательно передать сообщение ко всем машинам, доступным в локальной сети.

Как я могу сделать то использование обычных системных вызовов сокета в C?

6
задан Alexis Wilke 8 March 2018 в 17:47
поделиться

4 ответа

Просто отправьте сообщение на широковещательный адрес вашей подсети, который для 192.168.0.0/24 равен 192.168.0.255, или просто отправьте сообщение на 255.255.255.255.

6
ответ дан 8 December 2019 в 16:01
поделиться

вы должны использовать UDP для отправки широковещательного сообщения по сети. при создании сокета с помощью функции socket () укажите AF_INET для параметра семейства и SOCK_DGRAM для типа параметр. в некоторых системах вам необходимо разрешить отправку широковещательных пакетов, установив для параметра сокета SO_BROADCAST значение 1, используя setsockopt () .

затем используйте вызов функции sendto () для отправки дейтаграммы и используйте 255.255.255.255 в качестве адреса назначения. (для сокетов дейтаграмм вам не нужно вызывать connect () , поскольку нет «соединения»).

в стандартных реализациях этот адрес транслируется на все компьютеры в локальной сети, это означает, что пакет не будет пересекать границы шлюза и не будет принят компьютерами, использующими сетевую маску, отличную от сетевой маски отправляющего компьютера.

6
ответ дан 8 December 2019 в 16:01
поделиться

посмотрите на сокеты udp.

Я рекомендую beej guide , взгляните на 6.3 Datagram Sockets

2
ответ дан 8 December 2019 в 16:01
поделиться

Вы можете использовать специальный адрес 255.255.255.255 для отправки широковещательного сообщения на каждый компьютер в локальной сети.

Для получения дополнительной информации см. раздел Широковещательная рассылка по IP-сети.

1
ответ дан 8 December 2019 в 16:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: