socket.BeginAccept(new AsyncCallback(AcceptCallback),null);------------->>>socket.BeginAccept(new AsyncCallback(AcceptCallback),socket);

解决方案 »

  1.   

    handler=socket.EndAccept(ar);
    //handler应该是一个新的SOCKET;
    socket.BeginAccept(new AsyncCallback(AcceptCallback),null);  
    //所以这里socket.BeginAccept(new AsyncCallback(AcceptCallback),handler);  
    ......这之后的SOCKET都应该调这个handler吧。我没有TEST过你的代码,仅供参考
      

  2.   

    socket.BeginAccept(new AsyncCallback(AcceptCallback),null); 
    在AcceptCallback中应该是:
    handler=socket.EndAccept(ar);socket.BeginAccept(new AsyncCallback(AcceptCallback),socket); 
    在AcceptCallback中应该是:
    Socket listener=(Socket)ar.AsyncState;
    Socket handler=listener.EndAccept(ar);
    最好test我的代码后再说,这样可能效率回更高一点
      

  3.   

    public static void AcceptCallback(IAsyncResult ar)
    {
    try
    {
    byte[] bytes=new byte[1024];
    handler=socket.EndAccept(ar);
    socket.BeginAccept(new AsyncCallback(AcceptCallback),null);
    handler.BeginReceive(bytes,0,bytes.Length,0,new AsyncCallback(OnReceive),null);
    }
    catch(Exception ex)
    {
    MessageBox.Show(ex.Message);
    }
    }
    --------------------
    这个函数我觉得有问题socket.BeginAccept(new AsyncCallback(AcceptCallback),null);
    里面,又
    new AsyncCallback(AcceptCallback)
    是一个,没有终止条件的循环
      

  4.   

    a
    _____________________________________________________________________________该问题已经结贴 ,得分记录:  zairwolfc (500)