Я хочу отправить дейтаграмму широковещательной передачи UDP на несколько устройств в сети, включая само устройство-отправитель. Цель состоит в том, чтобы все устройства получали данные в то же самое время (хорошо, +/- 5 мс в порядке).принудительное распространение UDP по сети (отключить loopback)
Проблема заключается в том, что сетевой интерфейс на передающем устройстве зацикливается данные обратно, поэтому он сразу же получил (в отличие от других устройств, где задержка сети входит в игру - совсем немного для Wi-Fi, например)
Любая идея, как я могу отключить свой сетевой интерфейс, чтобы напрямую контактировать данные?
Другая идея, которую я имел: Возможно ли создать виртуальный сетевой интерфейс для отправки широковещательного пакета и прослушивания на другом интерфейсе, который получает его только через сеть?
Я пытаюсь сделать это на C на машине Linux. Любая помощь будет принята с благодарностью!
Я думаю, вы неправильно поняли, как работают сети. Вы не можете отправить сообщение себе, подождите его в кабеле/воздухе за X миллисекунды, а затем вернитесь. Вы хотите, чтобы какой-либо целевой ящик/маршрутизатор возвращал вам сообщение? Вам нужен какой-то отложенный интерфейс обратной петли? – tux3
Передаваемые/многоадресные пакеты фактически не отправляются. Они всегда ставятся в очередь в очереди ввода интерфейса, поэтому вы всегда получаете их ** перед ** удаленным сайтом. Кстати, вы не можете получить пакет в ТОЧНОМ месте, так как они находятся в разных местах, и вам приходится учитывать задержку передачи, мосты, маршрутизацию и несколько других вещей, которые могут задержать поставки. Почему вы считаете, что 5 мс в порядке, а не 0,5 с? Сетевые полосы варьируются от bps до Gbps (даже Tbps, теперь). –
Лучше объясните, что является вашей ** настоящей ** проблемой, а не тем, что у вас есть в голове, чтобы спланировать решение. –