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); } }
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(); } }