【问题标题】:Exception in Socket套接字中的异常
【发布时间】:2013-11-20 14:46:08
【问题描述】:

我的应用程序中有一个异常让我感到困惑

我确实有一个方法是

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;
            }
        }
    }

我得到的错误是

一旦套接字断开连接,您只能重新连接 异步,并且只到不同的端点。 BeginConnect 必须 在操作完成之前不会退出的线程上调用 完成。

从那一行

client.Connect(Remote_EndPoint);

当我从

跟踪它时,我遇到了其他错误

Remote_EndPoint.Address.ScopeID

这是

“Remote_EndPoint.Address.ScopeId”引发了“System.Net.Sockets.SocketException”类型的异常

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

【问题讨论】:

    标签: c# sockets udp


    【解决方案1】:

    如果我错了,请纠正我,但是您将此 UdpClient 设置为侦听器,对吗?

    无需使用Connect 方法(UdpClient 对象用作发射器来识别远程接收器);识别本地端点后立即设置侦听器模式。

    UDP 本身并没有建立连接(这是它的表亲 TCP 协议的一个特征)——因此,错误消息具有误导性;没有像断开连接的 UDP 套接字这样的东西。

    这篇文章可能对你有所帮助:

    C# How to make a simple UDP server

    【讨论】:

    • 实际上我也使用 UdpClient 作为侦听器和发送者来接收来自 gps 设备的数据包并将确认再次发送回设备所以我需要 Connect 方法所以这里的情况是什么
    猜你喜欢
    • 2011-05-28
    • 2011-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-16
    • 1970-01-01
    相关资源
    最近更新 更多