Решение для Windows XP или выше. Предпочтительно в C# или в C++.Отправлять широковещательную рассылку UDP (255.255.255.255) только от конкретного адаптера (например, 192.168.101.1); на Windows
Мы не хотим транслировать, используя широковещательную рассылку подсети (например, 192.168.101.255), так как устройство, с которым мы пытаемся связаться, не отвечает на это. Вместо этого мы хотим иметь возможность отправлять датаграмму UDP с адресом назначения 255.255.255.255 только из конкретного NIC/IPAddress, так что широковещательная передача НЕ отправляется на другие сетевые адаптеры.
Это означает, что мы должны обойти стек IP, который, таким образом, является вопросом. Как мы можем обойти стек IP в Windows для отправки дейтаграммы, совместимой с UDP/IP, с определенного NIC/MAC-адреса?
Возможно ли это непосредственно в C#? Или вы должны создать свою собственную упаковку, например. C++/CLI? – nietras
var localEndPoint = новый IPEndPoint (IPAddress.Parse ("192.168.103.1"), 0); using (var socket = new UdpClient (localEndPoint)) { var remoteEndPoint = новый IPEndPoint (IPAddress.Parse ("255.255.255.255"), 3956); var datagram = новый байт [] {0x11, 0x22, 0x33, 0x44}; // Попытка отправить широковещательную дейтаграмму только с локальной конечной точки // но передача передает пакет со всех сетевых адаптеров в соответствии с Wireshark socket.Send (датаграмма, датаграмма.Length, remoteEndPoint); } – nietras
Хмм как вы вставляете код правильно? Anyhoo, это не работает, поэтому полученный ответ не работает. – nietras