Что касается других, у меня возникла проблема с использованием Bind, потому что я использовал класс UdpClient и обращался к его внутреннему сокету (через UdpClient.Client), который генерировал исключение SocketException, независимо от того, как я пытался связать. Мой обходной путь основан на создании и привязке Socket, а затем назначении его экземпляру UdpClient:
using (var socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp))
{
var endPoint = new IPEndPoint(ip, port);
socket.Bind(endPoint);
using (var client = new UdpClient() {Client = socket})
{
var destinationIP = IPAddress.Broadcast;
client.Connect(destinationIP, port);
client.Send(bytes, bytes.Length);
}
}