Я работаю над трансляцией, и я плохо себя чувствую, даже заставляя работать. Я знаю, что мне нужно выполнить вызов setsockopt(), но что нужно до этого, чтобы обеспечить трансляцию в каждую ячейку сети? Я смутно помню что-то о дополнении сетевого адреса или что-то в этом роде. Я ценю помощь.Что необходимо для создания UDP-вещания в C?
ответ
Вам не нужно использовать setsockopt(). Пакет UDP, отправленный на специальный адрес 255.255.255.255, будет отправлен на все адреса в локальной сети.
Если сеть, которую вы хотите передать, не является локальной, вам необходимо использовать широковещательный адрес этой сети (согласно комментарию ivymike), который по обычному соглашению (но не всегда) относится к последнему IP-адресу в подсети.
Имейте в виду, что широковещательные адреса используются в ряде атак DOS и могут быть отфильтрованы.
Это был ответ, спасибо большое! – evantravers
Я не уверен, что принятый ответ верен, когда дело доходит до мира Windows.
У меня есть класс UDPSocket
, который вдохновлен this answer. Он используется довольно долго и работает нормально. Но я просто попытался использовать его, чтобы сделать WakeOnLan()
функцию, которая вещает на 255.255.255.255
и sendto()
Сбой вызова с Windows Socket Error 10013 - Отказано в доступе (по крайней мере, протестирована на моей системе Windows 7).
Я протянул UDPSocket
конструктор с setsockopt()
вызова на основе ответа Реми Лебо к this question, помещенного сразу после socket()
вызова. Это позволило широковещательную передачу, и это было недостающее звено в создании моей функции WakeOnLan()
.
Я не предполагаю, что это «ответ», но слишком длинный для комментария, и вики сообщества могут редактировать более общую правду в этом ответе в интересах тех, кто находит принятый ответ не хватает.
- 1. Что необходимо для создания загружаемой песни?
- 2. Что необходимо для создания переменных события при обработке событий C#?
- 3. Что необходимо для создания нескольких дочерних SA в IKE V2?
- 4. Что необходимо для создания смартфона для веб-сайта?
- 5. Что необходимо для написания программы для создания собственных IP-пакетов?
- 6. Что необходимо для создания среды разработки и производства PHP?
- 7. необходимо руководство для создания календаря
- 8. Что необходимо для разработки приложения ArcGIS? (C#?)
- 9. Что необходимо для НЛП?
- 10. Что необходимо для подключения?
- 11. Что необходимо в бинарном дереве C++
- 12. необходимо создать объект для создания, содержащий id
- 13. Что необходимо для реализации корневого класса Objective-C?
- 14. Что необходимо для подписанных и неподписанных символов в C
- 15. new необходимо использовать для создания структуры?
- 16. Что необходимо для документирования кода?
- 17. Что необходимо для архитектуры DAO
- 18. Что необходимо для закрытия файла?
- 19. Что необходимо для установки Spring?
- 20. Что необходимо для установки OpenGl?
- 21. Что необходимо для использования LODSB в сборке?
- 22. Что необходимо для минималистичного видеосервера ONVIF?
- 23. Что необходимо для ссылки на пользовательский модуль?
- 24. Что необходимо для назначения/удаления в Verilog?
- 25. Что необходимо для реализации ADT в Clojure?
- 26. , что необходимо для немаршалинга в покое вызове
- 27. Единство: что действительно необходимо для работы RegisterInstance?
- 28. Как узнать, что C++ Builder необходимо для открытия существующего проекта
- 29. Что необходимо для простейшей передачи по ссылке?
- 30. Что необходимо для разработки базы данных в облаке?
Опубликуйте полный исходный код. Прочтите страницы руководства. –
Юристы Microsoft позвонили. Они сказали что-то об эволюторах, нарушающих их патент, приведя локальные сети в обход. –
Вам нужно будет направлять свою трансляцию по широковещательному адресу подсети, к которой вы хотите транслировать. Для получения дополнительной информации: http://beej.us/guide/bgnet/output/html/multipage/advanced.html#broadcast – ivymike