/// <summary> /// 丢失链接 /// </summary> void OnDisconnected(DisType dis, string msg) { Close(); //关掉客户端链接 int protocal = dis == DisType.Exception ? Protocal.Exception : Protocal.Disconnect; byte[] buffer = new byte[20]; NetworkManager.AddEvent(protocal, buffer); Debug.LogError("Connection was closed by the server:>" + msg + " Distype:>" + dis); }
/// <summary> /// 连接上服务器 /// </summary> void OnConnect(IAsyncResult asr) { try { outStream = client.GetStream(); client.GetStream().BeginRead(byteBuffer, 0, MAX_READ, new AsyncCallback(OnRead), null); byte[] str = new byte[20]; NetworkManager.AddEvent(Protocal.Connect, str); } catch (Exception e) { Close(); Debug.LogError(e.Message); byte[] str = new byte[20]; NetworkManager.AddEvent(Protocal.ConnectFail, str); } }
/// <summary> /// 接收到消息 /// </summary> /// <param name="ms"></param> void OnReceivedMessage(MemoryStream ms) { BinaryReader r = new BinaryReader(ms); byte[] message = r.ReadBytes((int)(ms.Length - ms.Position)); if (NetworkManager.isOpenEncry) { message = CEncryptClient.instance.RecEncrypt(message, message.Length, NetworkManager.isEncryOffsetEnable); } int readBigid = (int)message[0]; //接收的大协议号ID int readSmallid = (int)message[1]; //接收的子协议号ID int mainId = readBigid * 256 + readSmallid; // 获得请求的字符串 byte[] buffer = new byte[message.Length - NetworkManager.s_protoNumberLen]; System.Buffer.BlockCopy(message, NetworkManager.s_protoNumberLen, buffer, 0, message.Length - NetworkManager.s_protoNumberLen); NetworkManager.AddEvent(mainId, buffer); }