2016-09-15 4 views
0

Я хочу получать пакеты с IP-адреса ниже, используя следующий порт. Проблема возникает после «client.Receive (ref localEp)»; В этой строке код не запускается и также не может отлаживаться.Не удается отладить клиент UDPclient

UdpClient client = new UdpClient(); 

IPEndPoint localEp = new IPEndPoint(IPAddress.Any, 17000); 
client.Client.Bind(localEp); 

IPAddress multicastaddress = IPAddress.Parse("224.0.0.10"); 
client.JoinMulticastGroup(multicastaddress); 

while (true) 
{ 
    Byte[] data = client.Receive(ref localEp); 
    string strData = Encoding.UTF8.GetString(data); 
    Console.WriteLine(strData); 
} 

Я также получаю это исключение ScopeId = 'localEp.Address.ScopeId' бросил исключение типа 'System.Net.Sockets.SocketException' в IPEndPoint localEp. Помогите скорректировать мой код

ОБНОВЛЕНИЕ Решение: на моей машине установлена ​​установка виртуальной машины HYPER-V, которая ограничивает получение этих данных udp. Я просто отключил его и начал получать данные. Честно говоря, я понятия не имею о его поведении.

+0

может быть, проблема с портом 17000. попробовать другие порты. –

+0

Я проверил с некоторыми другими значениями и значением по умолчанию 0, той же проблемой !! :( –

ответ

1

Сначала попробуйте способ MSDN получать данные из любого источника с локального хоста, а затем из другого имени хоста:

https://msdn.microsoft.com/en-us/library/system.net.sockets.udpclient(v=vs.110).aspx

// This constructor arbitrarily assigns the local port number. 
    UdpClient udpClient = new UdpClient(17000); 

    udpClient.Connect("127.0.0.1", 17000); 

    // Sends a message to the host to which you have connected. 
    Byte[] sendBytes = Encoding.ASCII.GetBytes("Is anybody there?"); 

    udpClient.Send(sendBytes, sendBytes.Length); 

    //// Sends a message to a different host using optional hostname and port parameters. 
    //UdpClient udpClientB = new UdpClient(); 
    //udpClientB.Send(sendBytes, sendBytes.Length, "AlternateHostMachineName", 17000); 

    //IPEndPoint object will allow us to read datagrams sent from any source. 
    IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, 0); 

    // Blocks until a message returns on this socket from a remote host. 
    Byte[] receiveBytes = udpClient.Receive(ref RemoteIpEndPoint); 
    string returnData = Encoding.ASCII.GetString(receiveBytes); 
+0

Хорошо работает с локальным хостом. Я думаю, проблема связана с сервером, который не отправляет никаких данных. BTW, спасибо за ответ –

+0

Он работает с получением данных с сервера localhost –

+0

Да, работает, даже если Hyper -V включен –

Смежные вопросы