我现在是通过异步接收数据函数中的异常来判断的。而且如果客户端是delhpi的话,不会出异常,而是会不停的触发回调函数。好像客户端连接断开,就会触发异步接受数据的回调函数。怎么样才能正确判断呢?//异步接收数据的回调函数。
    public static void OnRecieve(IAsyncResult IR)
    {
        try
        {
            Console.WriteLine("<SYS>进入接收...");
            Socket RecSocket = (Socket)IR.AsyncState;
            
            int isize = RecSocket.EndReceive(IR);
            string msg = Encoding.ASCII.GetString(tmpbuff);
            Console.WriteLine("<MSG>:" + msg);
            RecSocket.Send(Encoding.ASCII.GetBytes("return:" + msg));
            if ((isize == 0))  //针对Delhpi的断开连接            {
                RecSocket.Shutdown(SocketShutdown.Both);
                RecSocket.Disconnect(false);
            }            tmpbuff = new byte[buffsize];            RecSocket.BeginReceive(tmpbuff, 0, tmpbuff.Length, SocketFlags.None, OnRecieve, RecSocket);
        }
        catch (SocketException er)  //针对C#的断开连接
        {
            if (er.ErrorCode == 10054)
            {
                Console.WriteLine("<SYS>连接已中断!");
            }
        }
    }