コード例 #1
0
 private void ReceiveCallback(IAsyncResult ar)
 {
     try
     {
         int length = socket.EndReceive(ar);
         if (length <= 0)
         {
             //说明客户端断开连接
             Disconnect((Action <ClientSocket>)ar.AsyncState);
             return;
         }
         else
         {
             //todo 封装消息队列  显示方法
             //string msg= Encoding.UTF8.GetString(data);
             NetBufferReader netBufferReader = new NetBufferReader(recvData);
             string          msg             = netBufferReader.GetString();
             RecvMsgHandle(msg);
         }
         socket.BeginReceive(recvData, 0, 1024, SocketFlags.None, ReceiveCallback, ar.AsyncState);
     }
     catch (Exception e)
     {
         Console.WriteLine(e.Message);
         Disconnect((Action <ClientSocket>)ar.AsyncState);
     }
 }
コード例 #2
0
 private void ReceiveCallBack(IAsyncResult ar)
 {
     try
     {
         Socket          socket          = (Socket)ar.AsyncState;
         int             length          = socket.EndReceive(ar);
         NetBufferReader netBufferReader = new NetBufferReader(recvBuffer);
         string          msg             = netBufferReader.GetString();
         Debug.Log(msg);
         if (msg == "pong")
         {
             pingValue = NetTimer.GetTimeStamp() - lastPingTime;
         }
         else
         {
             if (receivedSucceed != null)
             {
                 receivedSucceed(msg);
             }
         }
         //处理消息
         socket.BeginReceive(recvBuffer, 0, 1024, SocketFlags.None, ReceiveCallBack, socket);
     }
     catch (Exception e)
     {
         Debug.Log(e.ToString());
         DisConnect();
     }
 }