Я работаю над клиент-серверным приложением, написанным на C. Я хочу передать сообщение всем машинам, доступным в локальной сети.Как транслировать сообщение в сети?
Как это сделать, используя обычные системные вызовы сокетов в C?
Я работаю над клиент-серверным приложением, написанным на C. Я хочу передать сообщение всем машинам, доступным в локальной сети.Как транслировать сообщение в сети?
Как это сделать, используя обычные системные вызовы сокетов в C?
Просто отправьте сообщение на широковещательный адрес вашей подсети, который для 192.168.0.0/24 равен 192.168.0.255 или просто передается по адресу 255.255.255.255.
Вы можете использовать специальный адрес 255.255.255.255 для отправки широковещательного сообщения на каждый компьютер в локальной сети.
Для получения дополнительной информации см. Раздел IP Network Broadcasting.
Посмотрите на разъемы udp.
Я рекомендую beej guide, посмотрите на 6,3 Datagram Sockets
Ссылка сломана, ответ довольно бесполезен, как этот. –
вы должны использовать UDP для отправки широковещательного сообщения по сети. при создании гнезда с использованием функции socket()
укажите AF_INET
для параметра family
и SOCK_DGRAM
для параметра type
. на некоторых системах вам необходимо включить отправку широковещательного пакета, установив опцию сокета SO_BROADCAST
в 1, используя setsockopt()
.
затем используйте вызов функции sendto()
для отправки дейтаграммы и используйте адрес 255.255.255.255
в качестве адреса назначения. (для сокетов датаграмм вам не нужно звонить connect()
, так как нет «соединения»).
В стандартных реализациях этот адрес передается на весь компьютер в локальной сети, это означает, что пакет не будет пересекать границы шлюза и не будет принят компьютерами с использованием сетевой маски, отличной от сетевой маски передающего компьютера.
В чем разница в использовании IP-адресов '255.255.255.255' и' 224.0.0.0'? –
@AlexisWilke: диапазон 224.0.0.0/4 зарезервирован для многоадресной рассылки. многоадресная рассылка - это целый другой зверь, чем трансляция: услуги сгруппированы, конкретному хосту необходимо «присоединиться» к группе многоадресной рассылки, чтобы получать многоадресные пакеты, отправленные этой группе, некоторые группы четко определены и им назначается определенный IP-адрес. обратите внимание, однако, что некоторые группы ведут себя как широковещательные группы (например, 224.0.0.1). также обратите внимание, что поддержка multicast не является обязательной для ipv4. см. [wikipedia] (https://en.wikipedia.org/wiki/Multicast_address) и [tldp] (https://www.tldp.org/HOWTO/Multicast-HOWTO.html) –
«в сети» слишком расплывчато. Вы имеете в виду только локальную сеть? – bortzmeyer
Я имел в виду в локальной сети. Спасибо bortzmeyer, я нашел свой ответ: 192.168.0.255 :) – Zenet