C# 报错:“由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作。”

使用 C# 进行网络编程,为什么以下这么简单的代码会报错?

class Program {
    private static IPEndPoint point = new IPEndPoint(IPAddress.Parse("60.20.63.12"),11500);
    static void Main() {
        var client = new UdpClient(15921);
        var data = new byte[1];

        for (int i = 0; i < 100000; i++) {
            client.Send(data,1,point); // “由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作。”
        }

        Console.ReadLine();
    }
}

VS

当次数不多时,比如只循环10000次,不会报错,这是为什么呢?

阅读 10.1k
1 个回答

应该是服务器的socket句柄资源用尽了,最好检查一下服务器配置。也就是之前发的请求所占的资源还没来得及释放第二次请求又到了,循环次数太多导致资源不够用了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进