Exemplo n.º 1
0
        /// <summary>
        /// 处理(异步)接收数据
        /// </summary>
        private void ReceiveCallback(IAsyncResult ar)
        {
            ClientPeer client = ar.AsyncState as ClientPeer;
            int        receiveLen;

            try
            {
                receiveLen = client.clientSocket.EndReceive(ar);
            }
            catch (SocketException e)
            {
                Disconnect(client, e.Message);
                return;
            }

            if (receiveLen > 0)
            {
                //数据接收成功
                byte[] tcpPacket = new byte[receiveLen];
                Buffer.BlockCopy(client.receiveBuffer, 0, tcpPacket, 0, receiveLen);
                client.HandleReceive(tcpPacket);

                //继续接收
                StartReceive(client);
            }
            else
            {
                Disconnect(client, "接收到零长度数据");
            }
        }