如何判断要监听的socket已经被close了?

解决方案 »

  1.   

    最简单的方法if (socket == null)
    {                    
        Console.Write("已关闭");
    }
      

  2.   

            /// <summary>
            /// 连接
            /// </summary>
            /// <param name="ar"></param>
            private void AcceptCallback(IAsyncResult ar)
            {
                Socket handler = null;
          
                    Socket listener = (Socket)ar.AsyncState;// 获取客户请求的socket
                    handler = listener.EndAccept(ar);                StateObject state = new StateObject(bufferSize, handler); // 造一个容器,并用于接收命令.
                    state.workSocket = handler;
                    myDataRS.listServer.Add(handler);
                        handler.BeginReceive(state.buffer, 0, bufferSize, 0, new AsyncCallback(ReadCallback), state);
                        allDone.Set();  //添加此命令,让主线程继续.
    停止监听后 handler = listener.EndAccept(ar);报错 无法访问已释放socket
      

  3.   

    先把其他的访问逐一关掉,handler的关闭方法放在最后。
      

  4.   

    先把其他的访问逐一关掉,handler的关闭方法放在最后。不知道怎么写