socket.beginreceive,使用65536大小的buffer来接受
callback函数为aaa()
内容如下
aaa()
{
socket.endreceive();
socket.beginreceive(...........);
}形成一种循环无限调用的关系,24小时待机接收客户发过来的信息经过测试发现,如果客户连接好的话,没什么问题
但是一旦客户网络不好,或者断开,那就会让cpu占用达到99%并且把内存全部占用感觉应该是客户断开但是beginreceive和aaa仍然无限调用导致请问怎么解决?

解决方案 »

  1.   

    看不出来。应该是你 aaa 方法中没有真正说明的代码所致。
      

  2.   

    aaa代码如下:
    private TcpClient tcpClientCmd = null;
    void start()
    {
    tcpClientCmd = new TcpClient();
    tcpClientCmd.Connect(ipadress, port);
    }
    private object thislock = new object();
    private void aaa(IAsyncResult ar)
    {
        Socket localClient = (Socket)ar.AsyncState;
        int bytesRead = 0;
        lock (thislock)
        {
            bytesRead = localClient.EndReceive(ar);
        }           
                
        lock (thislock)
        {
             tcpClientCmd.Client.BeginReceive(buffer, 0, 65536, 0, new AsyncCallback(aaa), tcpClientCmd.Client);
         }
                
    }