/// <summary> /// 接收指定客户端Socket的消息 /// </summary> /// <param name="clientSocket"></param> private static void RecieveMessage(object clientSocket) { Socket mClientSocket = (Socket)clientSocket; while (true) { try { int receiveNumber = mClientSocket.Receive(result); Console.WriteLine("接收客户端{0}消息, 长度为{1}", mClientSocket.RemoteEndPoint.ToString(), receiveNumber); ByteBuffer buff = new ByteBuffer(result); int datalength = buff.ReadShort(); int typeId = buff.ReadInt(); byte[] pbdata = buff.ReadBytes(); //通过协议号判断选择的解析类 if (typeId == (int)EnmCmdID.CS_LOGIN_REQ) { CSLoginReq clientReq = PackCodec.Deserialize <CSLoginReq>(pbdata); string user_name = clientReq.LoginInfo.UserName; string pass_word = clientReq.LoginInfo.Password; Console.WriteLine("数据内容:UserName={0},Password={1}", user_name, pass_word); } } catch (Exception ex) { Console.WriteLine(ex.Message); mClientSocket.Shutdown(SocketShutdown.Both); mClientSocket.Close(); break; } } }
static void Single_OnLoginReq(object obj, Action <object> callback) { CSLoginReq req = obj as CSLoginReq; Vector3 pos = NBTHelper.GetPlayerPos(); Vector3 rot = NBTHelper.GetPlayerRot(); CSLoginRes rsp = new CSLoginRes() { RetCode = 0, PlayerData = new CSPlayer { PlayerID = 0, Name = "Steve", Position = pos.ToCSVector3(), Rotation = rot.ToCSVector3(), SelectIndex = playerData.SelectIndex, } }; for (int i = 0; i < 18; i++) { rsp.PlayerData.BagItems.Add(new CSItem { Type = playerData.BagItems[i].type, Count = playerData.BagItems[i].count }); } for (int i = 0; i < 9; i++) { rsp.PlayerData.SelectItems.Add(new CSItem { Type = playerData.SelectItems[i].type, Count = playerData.SelectItems[i].count }); } foreach (KeyValuePair <Vector3Int, Vector3Int> kvPair in dependenceDict) { rsp.BlockAttrs.Add(new CSBlockAttrs { pos = kvPair.Key.ToCSVector3Int(), depentPos = kvPair.Value.ToCSVector3Int(), }); } foreach (KeyValuePair <Vector3Int, CSBlockOrientation> kvPair in orientationDict) { rsp.BlockAttrs.Add(new CSBlockAttrs { pos = kvPair.Key.ToCSVector3Int(), orient = kvPair.Value, }); } callback(rsp); }
public static void LoginReq(string account, string password) { CSLoginReq req = new CSLoginReq { Account = account, Password = password, }; NetworkManager.SendPkgToServer(ENUM_CMD.CS_LOGIN_REQ, req, OnLoginRes); }
//登陆 public void Login(string account, string pass) { CSLoginReq req = new CSLoginReq(); req.AccountName = account; req.Passwd = pass; req.PlatformId = (uint)EPlatformId.Official; LoginAccountName = account; LoginPassword = pass; NetworkManager.Instance.SendMsg(req, (int)MessageId.LoginCsLoginReq); Debug.Log("login~~~~~~"); }
// Use this for initialization void Start() { CSLoginInfo mLoginInfo = new CSLoginInfo(); mLoginInfo.UserName = "******"; mLoginInfo.Password = "******"; CSLoginReq mReq = new CSLoginReq(); mReq.LoginInfo = mLoginInfo; byte[] data = CreateData((int)EnmCmdID.CS_LOGIN_REQ, mReq); ClientSocket mSocket = new ClientSocket(); mSocket.ConnectServer("127.0.0.1", 8088); mSocket.SendMessage(data); }
// Use this for initialization void Start() { // ObjectToFile(); // FileToObject(); CSLoginInfo mLoginInfo = new CSLoginInfo(); mLoginInfo.UserName = "******"; mLoginInfo.Password = "******"; CSLoginReq mReq = new CSLoginReq(); mReq.LoginInfo = mLoginInfo; byte[] result = PackCodec.Serialize(mReq); CSLoginReq req = PackCodec.Deserialize <CSLoginReq>(result); Debug.Log("username="******";password=" + req.LoginInfo.Password); }
public static void OnLoginReq(Player player, MemoryStream stream) { CSLoginReq req = NetworkManager.Deserialize <CSLoginReq>(stream); Ultilities.Print($"CSLoginReq,account={req.Account}"); //检测是否已注册 bool bAccountExist = Redis.GetAccountData(req.Account, out AccountData accountData); //Ultilities.Print($"bAccountExist={bAccountExist}"); if (!bAccountExist) { CSLoginRes res = new CSLoginRes { RetCode = 6 }; NetworkManager.Enqueue(player.socket, ENUM_CMD.CS_LOGIN_RES, res); } else { //检测是否已登录,防止顶号 bool hasLoggedIn = players.ContainsKey(accountData.playerID); //Ultilities.Print($"hasLoggedIn={hasLoggedIn}"); if (hasLoggedIn) { CSLoginRes res = new CSLoginRes { RetCode = 5 }; NetworkManager.Enqueue(player.socket, ENUM_CMD.CS_LOGIN_RES, res); } else { //检查密码是否正确 bool bCorrect = req.Password.Equals(accountData.password); //Ultilities.Print($"req.Password={req.Password},accountData.password={accountData.password},bCorrect={bCorrect}"); if (!bCorrect) { CSLoginRes res = new CSLoginRes { RetCode = 7 }; NetworkManager.Enqueue(player.socket, ENUM_CMD.CS_LOGIN_RES, res); } else { bool hasData = Redis.GetPlayerData(accountData.playerID, out CSPlayer playerData); //Ultilities.Print($"hasData={hasData}"); if (!hasData) { //如果是第一次登陆,则写数据库 playerData = new CSPlayer { PlayerID = accountData.playerID, Name = accountData.name, Position = new CSVector3 { x = 0, y = 30, z = 0 }, Rotation = new CSVector3 { x = 0, y = 0, z = 0 } }; Redis.SetPlayerData(playerData.PlayerID, playerData); } AddPlayer(player, playerData); //Ultilities.Print($"playerData,playerID={accountData.playerID},account={accountData.account},password={accountData.password},name={accountData.name}"); //Ultilities.Print($"player,id={player.id},name={player.name}"); CSLoginRes res = new CSLoginRes { RetCode = 0, PlayerData = playerData }; NetworkManager.Enqueue(player.socket, ENUM_CMD.CS_LOGIN_RES, res); MessageNotify("system", "player " + player.name + " has logged in, current number of player : " + players.Count); } } } }
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); } }