string ipAddress = "a.b.c.d";
IPAddress ipAddr = IPAddress.Parse(ipAddress);
IPEndPoint endPoint = new IPEndPoint(ipAddr, port);
EndPoint remote = (EndPoint)endPoint;
socket.ReceiveFrom(data, ref remote);
У меня периодически возникает проблема, когда я пытаюсь прочитать данные из UDP-сокета. Я говорю ему, с какого IP-адреса и порта я хочу прочитать - редко, с этого получен пакет с другого IP-адреса?
Исключение в режиме без вывода сообщений (когда я наведите курсор мыши на ipAddr):
«ipAddr.ScopeId» вызвал исключение типа «System.Net.Sockets.SocketException»
Если я поймаю это во время отладки и посмотрю на объекты 'endPoint' и 'remote' - конечная точка - это правильный IP-адрес, но IP-адрес удаленного изменился (сам по себе после этого исключения, это НЕ проблема с моей логикой) на фактический ip-адрес, с которого он получен, но не на тот, с которого он запросил!
ReceiveFrom работает в 99% случаев, что означает это исключение, почему Microsoft, почему?
Проблема в том, что как только этот пакет прочитан, он прочитан и не передан туда, куда он должен был идти, как я могу предотвратить это?
edit: scopeID для IPV6, но я не забочусь о ipv6, поэтому, возможно, я смотрю не в том месте, но это по-прежнему не объясняет, почему «конечная точка» неправильно разрешена в «удаленную» (IPEndPoint приведен к абстрактному EndPoint) - 172.50.2.111 не существует и в 99% случаев он истекает, но почему он собирает другие пакеты ?! плачет