У меня есть ПК с двумя сетевыми платами, подключенными к различным сетям (много размещенная настройка сети). Я хочу отправить широковещательные кадры UDP в обеих сетях. IP-адрес отправителей кадров должен быть IP-адресом адаптера, который используется для передачи кадра. Адрес назначения должен быть ОГРАНИЧЕННЫМ ШИРОКОВЕЩАТЕЛЬНЫМ АДРЕСОМ.
Приложение заказчика не должно работать с административными правами (контроль учётных записей не является acceptible).
Как я могу отправить эти кадры UDP в ОГРАНИЧЕННЫЙ ШИРОКОВЕЩАТЕЛЬНЫЙ АДРЕС (255.255.255.255)? Как я мог передать эти кадры к СЕТЕВОМУ ШИРОКОВЕЩАТЕЛЬНОМУ АДРЕСУ (x.y.z.255)?
Я знаю, как сделать это с неструктурированными сокетами. Но неструктурированные сокеты могут только использоваться с административными правами.
Не можете ли вы просто открыть два обычных UDP сокета и привязать один к каждому из адресов интерфейса, а затем просто отправлять на широковещательные адреса?
Это, насколько я знаю, поможет справиться с отправкой в обеих сетях и гарантирует, что отправленные пакеты будут иметь правильный ip-адрес. Это не будет работать, если вы привяжете один сокет к INADDR_ANY, что, конечно, будет работать, если в машине только один сетевой адаптер. Для создания полного решения, вероятно, лучше всего перебрать все доступные адреса и создать сокет для каждого, привязаться к каждому и отправлять с каждого.