套接字程序崩溃计算机

时间:2016-09-23 12:50:23

标签: c#

以下是代码。如果您尝试运行,程序将崩溃您的计算机

  IPEndPoint ip = new IPEndPoint(IPAddress.Any, 10000);
  Socket sk = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
  sk.Bind(ip);
  sk.Listen(100);
  while (true) {
    sk.BeginAccept(new AsyncCallback(OnReveive), sk);
  }

  private static void OnReveive(IAsyncResult ar) {
    Socket sock = (Socket) ar.AsyncState;
    Socket cl = sock.EndAccept(ar);
    Console.WriteLine("New Connection from" + cl.RemoteEndPoint.ToString());
  }

我想问为什么它会导致我的电脑崩溃

1 个答案:

答案 0 :(得分:6)

  while (true) {
    sk.BeginAccept(new AsyncCallback(OnReveive), sk);
  }

BeginAccept是一种异步方法,可立即返回,因此您的代码会使用new AsyncCallback(OnReveive)回调快速填充内存池。只打电话一次,不要把它放在while

或者调用阻止方法Accept()