private void Awake() { ThreadCrossHelper.Instance.CreatThreadCrossHelp(); if (!IsClient) { TcpSocketMgr.GetInstance().Init(new ReceviceDataKeeper(new MessagerSolver()), new MessagerDataSender()); TcpSocketMgr.GetInstance().StartSever(GetIP(), 50015); TcpSocketMgr.GetInstance().GetMessageKeeper().Solver.MessageFixedUpCallback += TcpServerMsgCallback; } else { TcpSocketClientMgr.GetInstance().Init(new ReceviceDataKeeper(new MessagerSolver()), new MessagerDataSender()); TcpSocketClientMgr.GetInstance().GetMessageKeeper().Solver.MessageFixedUpCallback += TcpClientMsgCallback; } SendMsg.onClick.AddListener(SendMsgOnClick); ConnectTosever.onClick.AddListener(() => { if (IsClient) { TcpSocketClientMgr.GetInstance().ConnectToServer(GetIP(), 50015); } }); //UserData user1 = new UserData(); //user1.id = 1; //user1.name = "User1"; //user1.level = 10; //string json = JsonUtility.ToJson(user1); //Debug.Log("Json Length:" + Encoding.UTF8.GetByteCount(json)); }
private void TcpServerMsgCallback(byte[] data) { Debug.Log("收到消息回复 TcpServerMsgCallback"); ThreadCrossHelper.Instance.ExcutionFunc(() => { string msg = null; if (IsOpenNewMethod) { UserData user = PackCodec.Deserialize <UserData>(data); BinaryFormatter bFormatter = new BinaryFormatter(); using (MemoryStream s = new MemoryStream()) { byte[] bdata = user.data; s.Write(bdata, 0, bdata.Length); s.Position = 0; Test t = (Test)bFormatter.Deserialize(s); msg = string.Format("user2-> id:{0}, name:{1}, level:{2}, data:{3}", user.id, user.name, user.level, t.msg); } } else { CSLoginInfo mLoginInfo = PackCodec.Deserialize <CSLoginInfo>(data); msg = "UserName = "******", Password = "******"I get message"; UserData user1 = new UserData(); user1.id = 1; user1.name = "User1"; user1.level = 10; BinaryFormatter bFormatter = new BinaryFormatter(); using (MemoryStream byteData = new MemoryStream()) { bFormatter.Serialize(byteData, test); byte[] value = byteData.GetBuffer(); user1.data = value; } //user1.data = Encoding.UTF8.GetBytes("I get your message"); //序列化 using (MemoryStream ms = new MemoryStream()) { Serializer.Serialize <UserData>(ms, user1); ms.Position = 0; int length = (int)ms.Length; buff = ms.ToArray(); } } else { CSLoginInfo Info = new CSLoginInfo(); Info.UserName = "******"; Info.Password = "******"; CSLoginReq mReq = new CSLoginReq(); mReq.LoginInfo = Info; buff = PackCodec.Serialize(mReq); } TcpSocketMgr.GetInstance().GetSendAssist().SendMsg(buff); }
private void SendMsgOnClick() { if (!IsClient) { byte[] buff = null; if (IsOpenNewMethod) { Test test = new Test(); test.msg = "It's a Server bytes array"; UserData user1 = new UserData(); user1.id = 1; user1.name = "User1"; user1.level = 10; BinaryFormatter bFormatter = new BinaryFormatter(); using (MemoryStream byteData = new MemoryStream()) { bFormatter.Serialize(byteData, test); byte[] value = byteData.GetBuffer(); user1.data = value; } //user1.data = Encoding.UTF8.GetBytes("It's a Server bytes array"); //序列化 using (MemoryStream ms = new MemoryStream()) { Serializer.Serialize <UserData>(ms, user1); ms.Position = 0; int length = (int)ms.Length; buff = new byte[length]; ms.Read(buff, 0, length); } } else { CSLoginInfo Info = new CSLoginInfo(); Info.UserName = "******"; Info.Password = "******"; CSLoginReq mReq = new CSLoginReq(); mReq.LoginInfo = Info; buff = PackCodec.Serialize(mReq); } TcpSocketMgr.GetInstance().GetSendAssist().SendMsg(buff); } else { byte[] buff = null; if (IsOpenNewMethod) { Test test = new Test(); //test.msg = "It's a Client bytes array"; test.msg = "It's a Client bytes array"; UserData user1 = new UserData(); user1.id = 1; user1.name = "User1"; user1.level = 10; //user1.data = Encoding.UTF8.GetBytes("It's a Client bytes array"); byte[] stringData = Encoding.UTF8.GetBytes("It's a Client bytes array"); Debug.Log("byte string length:" + stringData.Length); BinaryFormatter bFormatter = new BinaryFormatter(); using (MemoryStream byteData = new MemoryStream()) { Serializer.Serialize <Test>(byteData, test); user1.data = byteData.ToArray(); Debug.Log("data length:" + user1.data.Length); } //序列化 using (MemoryStream ms = new MemoryStream()) { Serializer.Serialize <UserData>(ms, user1); ms.Position = 0; int length = (int)ms.Length; buff = ms.ToArray(); } } else { CSLoginInfo Info = new CSLoginInfo(); Info.UserName = "******"; Info.Password = "******"; CSLoginReq mReq = new CSLoginReq(); mReq.LoginInfo = Info; buff = PackCodec.Serialize(mReq); } TcpSocketClientMgr.GetInstance().GetSendAssist().SendMsg(buff); } }