Socket中的异常

时间:2013-11-20 14:46:08

标签: c# sockets udp

我的申请中有一个例外,我对此感到困惑

我确实有一个方法

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'的异常

那么异常的解决方案是什么

1 个答案:

答案 0 :(得分:0)

如果我错了,请纠正我,但是你将这个UdpClient设置为听众,对吗?

不需要使用Connect方法(UdpClient对象用作发射器来识别远程接收器);一旦识别出本地端点,就会设置监听器模式。

UDP本身并不建立连接(这是其表兄,TCP协议的特征) - 因此,错误消息具有误导性;没有断开连接的UDP套接字。

这篇文章对您有所帮助:

C# How to make a simple UDP server