2013-11-20 2 views
0

у меня есть исключение в моем приложении, что я запутался вИсключение в сокет

у меня есть метод, который

private void ListenForClients() 
    { 
     UdpClient client; 
     while (true) 
     { 
      try 
      { 
       client = oUdpClient; 
       Remote_EndPoint = new IPEndPoint(IPAddress.Any, 0); 
       client.Receive(ref Remote_EndPoint); 
       client.Connect(Remote_EndPoint); 
       Thread clientThread = new Thread(new ParameterizedThreadStart(HandleClientComm)); 
       clientThread.Start(client); 
      } 
      catch (SocketException ex) 
      { 
       client = null; 
      } 
     } 
    } 

ошибка я получаю, что

После сокет был отключен, вы можете повторно подключать снова асинхронно и только к другому EndPoint. BeginConnect должен вызываться в потоке, который не будет выходить до завершения операции .

от этой линии

client.Connect (Remote_EndPoint);

и я получил другую ошибку, когда я проследить его от

Remote_EndPoint.Address.ScopeID

который

'Remote_EndPoint.Address.ScopeId' бросил исключение типа «System.Net.Sockets.SocketException»

так что такое решение для этого исключения

ответ

0

Исправьте меня, если я ошибаюсь, но вы настраиваете этот UdpClient в качестве слушателя, не так ли?

Не нужно использовать метод Connect (который используется объектами UdpClient, действующими в качестве излучателей для идентификации удаленного рецептора); Режим прослушивателя устанавливается, как только вы идентифицируете локальную конечную точку.

UDP не устанавливает соединение как таковое (это характеристика его двоюродного брата, TCP prococol) - таким образом, сообщение об ошибке вводит в заблуждение; нет такой вещи, как разъединенный сокет UDP.

Это сообщение может иметь некоторую помощь к вам:

C# How to make a simple UDP server

+0

на самом деле я использую UdpClient в качестве слушателя и отправителя тоже получать пакеты с GPS устройства и отправить подтверждени на устройство снова, так что мне нужно Подключите метод, так что здесь ситуация –

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