public override void OnOperationRequest(OperationRequest operationRequest, SendParameters sendParameters, MyClientPeer peer) { List <string> usernameList = new List <string>(); foreach (MyClientPeer clientpeer in MyServer.Instance.PeerList) { if (!string.IsNullOrEmpty(clientpeer.username) && clientpeer != peer) { usernameList.Add(clientpeer.username); EventData eventdata = new EventData((byte)EventCode.SyncPlayer); Dictionary <byte, object> eventdict = new Dictionary <byte, object>(); eventdict.Add((byte)ParameterCode.Username, peer.username); eventdata.Parameters = eventdict; clientpeer.SendEvent(eventdata, sendParameters); } } //StringWriter sw = new StringWriter(); //XmlSerializer Serializer = new XmlSerializer(typeof(List<string>)); //Serializer.Serialize(sw, usernameList); //string usernameListString; //usernameListString = sw.ToString(); //sw.Dispose(); byte[] usernameBytes = ProtobufTool.Serialize <List <string> >(usernameList); OperationResponse operationresponse = new OperationResponse((byte)OperationCode.SyncPlayer); Dictionary <byte, object> dict = new Dictionary <byte, object>(); dict.Add((byte)ParameterCode.SyncPlayerList, usernameBytes); operationresponse.Parameters = dict; peer.SendOperationResponse(operationresponse, sendParameters); }
public override void OnOperationResponse(OperationResponse operationResponse) { byte[] SyncPlayerListBytes = (byte[])DictTool.GetValue(operationResponse.Parameters, (byte)ParameterCode.SyncPlayerList); List <string> usernameDict = ProtobufTool.Deserialize <List <string> >(SyncPlayerListBytes); player.OnSyncPlayer(usernameDict); }
void SendSyncPositionEvent() { List <PlayerPosition> playerPositionList = new List <PlayerPosition>(); foreach (MyClientPeer clientpeer in MyServer.Instance.PeerList) { if (!string.IsNullOrEmpty(clientpeer.username)) { PlayerPosition playerPosition = new PlayerPosition(); playerPosition.Username = clientpeer.username; playerPosition.PositionData = new PositionData() { X = clientpeer.x, Y = clientpeer.y, Z = clientpeer.z }; playerPositionList.Add(playerPosition); } } byte[] playerPositionByte = ProtobufTool.Serialize(playerPositionList); foreach (MyClientPeer clientpeer in MyServer.Instance.PeerList) { if (!string.IsNullOrEmpty(clientpeer.username)) { EventData eventData = new EventData((byte)EventCode.SyncPosition); Dictionary <byte, object> eventDict = new Dictionary <byte, object>(); eventDict.Add((byte)ParameterCode.SyncPositionList, playerPositionByte); eventData.Parameters = eventDict; clientpeer.SendEvent(eventData, new SendParameters()); } } }
// Use this for initialization void Start() { m_Socket = new TcpClient(); m_Socket.Connect("192.168.31.236", 8888); m_Stream = m_Socket.GetStream(); LoginC2S msg = new LoginC2S(); msg.name = "huashao"; byte[] dd = ProtobufTool.ProtoBufToBytes <LoginC2S>(msg); int len = dd.Length + 2; Debug.LogError(len); byte[] buf = new byte[len + 6]; buf[0] = (byte)(len & 0xff); buf[1] = (byte)(len >> 8 & 0xff); buf[2] = (byte)(len >> 16 & 0xff); buf[3] = (byte)(len >> 24 & 0xff); buf[4] = 1; buf[5] = 0; Array.Copy(dd, 0, buf, 6, dd.Length); m_Stream.Write(buf, 0, buf.Length); byte[] recv = new byte[1024]; int c = m_Stream.Read(recv, 0, 1024); int rlen = (recv[0] | recv[1] << 8 | recv[2] << 16 | recv[3] << 24); int rId = (recv[4] | recv[5] << 8); Debug.LogError(string.Format("recv len:{0} id:{1}", rlen, rId)); byte [] rbuf = new byte[rlen - 2]; Array.Copy(recv, 6, rbuf, 0, rlen - 2); LoginS2C rmsg = ProtobufTool.BytesToProtoBuf <LoginS2C>(rbuf); Debug.LogError(rmsg.playerId); m_Stream.Close(); m_Socket.Close(); }
public void OnReceive() { if (messageQueue.Count > 0) { MarsMessage message = messageQueue.Dequeue(); if (message == null) { Debug.LogFormat("消息={)},消息队列情况长度={1}", message, messageQueue.Count); return; } switch (message.cmd) { case MessageConst.Battle.RESP_MOVE_CHESS: Debug.Log("移动棋子"); RespMoveChess respMoveChess = ProtobufTool.DeSerialize <RespMoveChess>(message.data); ReceiveChessMove(respMoveChess); break; case MessageConst.Battle.RESP_CURRENT_GO_INFO: Debug.Log("当前行动信息"); RespCurrentGoInfo respCurrentGoInfo = ProtobufTool.DeSerialize <RespCurrentGoInfo>(message.data); ReceiveGoInfo(respCurrentGoInfo); break; default: break; } } }
void Start() { byte[] recv = new byte[16 * 1024]; connector = new TcpConnector("192.168.31.236", 8888); connector.On(SocketEvents.Message, (d) => { byte[] reData = d as byte[]; Debug.LogError(reData.Length); unpacker.Input(reData); int length; ushort msgId; while (unpacker.MoveNext(recv, out length, out msgId)) { LoginS2C lmsg = ProtobufTool.BytesToProtoBuf <LoginS2C>(recv, 0, length); Debug.LogError("recv msgID: " + msgId + " data:" + lmsg.playerId); } }); var wait = connector.Connect(); if (!Util.Wait(wait, 1000)) { connector.Dispose(); } }
public override void OnEvent(EventData eventData) { byte[] SyncPositionByte = (byte[])DictTool.GetValue(eventData.Parameters, (byte)ParameterCode.SyncPositionList); List <PlayerPosition> playPositionList = (List <PlayerPosition>)ProtobufTool.Deserialize <List <PlayerPosition> >(SyncPositionByte); player.OnSyncPositionEvent(playPositionList); }
//请求房间列表 public static void RequestGetRooms() { RequestGetRooms req = new RequestGetRooms() { Proto = (int)CmdEnum.ReqGetRooms }; byte[] data = ProtobufTool.CreateData(req.Proto, req); Request((CmdEnum)req.Proto, data); }
//请求心跳 public static void RequestAlive() { RequestAlive req = new RequestAlive() { Proto = (int)CmdEnum.ReqAlive }; byte[] data = ProtobufTool.CreateData(req.Proto, req); Request((CmdEnum)req.Proto, data); }
static public void SendMoveChess(MoveChess moveChess) { MarsMessage marsMessage = new MarsMessage() { messageType = MessageConst.Battle.TYPE, cmd = MessageConst.Battle.REQ_MOVE_CHESS, data = ProtobufTool.Serialize(moveChess) }; clientSocket.Send(marsMessage); }
//请求登录 public static void RequestLogin(string username, string password) { RequestLogin req = new RequestLogin() { Proto = (int)CmdEnum.ReqLogin, Account = username, Password = password }; byte[] data = ProtobufTool.CreateData(req.Proto, req); Request((CmdEnum)req.Proto, data); }
//请求注册 public static void RequestRegister(string account, string username, string password) { RequestRegister req = new RequestRegister() { Proto = (int)CmdEnum.ReqRegister, Account = account, Username = username, Password = password }; byte[] data = ProtobufTool.CreateData(req.Proto, req); Request((CmdEnum)req.Proto, data); }
public void Handle(int cmd, byte[] data) { switch (cmd) { case MessageConst.Tips.TIPS_RESP_RESULT: GameTips gameTips = ProtobufTool.DeSerialize <GameTips>(data); message.Enqueue(gameTips); break; default: break; } }
// Use this for initialization void Start() { Person p = new Person(); p.id = 1; p.name = "张三"; p.email = "*****@*****.**"; byte [] array = ProtobufTool.ProtoBufToBytes <Person>(p); Person tp = ProtobufTool.BytesToProtoBuf <Person>(array); string pData = tp.id + " " + tp.name + " " + tp.email; print(pData); text.text = pData + '\n' + SystemInfo.deviceUniqueIdentifier; }
static public void QuickMatch(int roomType) { ReqCreateRoom createRoom = new ReqCreateRoom { roomType = roomType }; MarsMessage marsMessage = new MarsMessage() { messageType = MessageConst.Room.TYPE, cmd = MessageConst.Room.REQ_QUICK_MATCH, data = ProtobufTool.Serialize(createRoom) }; clientSocket.Send(marsMessage); }
//请求创建房间 public static void RequestCreateRoom(string room_name, string pass_word, bool can_watch, int count) { RequestCreateRoom req = new RequestCreateRoom() { proto = (int)CmdEnum.Req_CreateRoom, room_name = room_name, password = pass_word, can_watch = can_watch, player_number = count, player_id = GameController.Instance.player.id }; byte[] data = ProtobufTool.CreateData(req.proto, req); Request((CmdEnum)req.proto, data); }
//请求创建房间 public static void RequestCreateRoom(string room_name, string pass_word, bool can_watch, int count) { RequestCreateRoom req = new RequestCreateRoom() { Proto = (int)CmdEnum.ReqCreateRoom, RoomName = room_name, Password = pass_word, CanWatch = can_watch, PlayerNumber = count, PlayerId = GameController.Instance.player.Id }; byte[] data = ProtobufTool.CreateData(req.Proto, req); Request((CmdEnum)req.Proto, data); }
void Update() { if (connector != null && connector.Connected) { LoginC2S msg = new LoginC2S(); msg.name = "huashao"; byte[] dd = ProtobufTool.ProtoBufToBytes <LoginC2S>(msg); for (int i = 0; i < 10; i++) { packer.Input((ushort)DemoTypeCmd.LoginReq, dd); Debug.LogError("sendSize:" + packer.CurSize); var await = connector.Send(packer.SendBuf, 0, packer.CurSize); packer.Clear(); } } }
private void UpdateDataFeedProducts3(byte[] message) { Thread.Sleep(10000); JobRabbitMQ jobReceived = ProtobufTool.DeSerialize <JobRabbitMQ>(message); if (jobReceived.JobName == "UpdateDatafeed") { if (jobReceived.JobType == 1) { Log.InfoFormat("Consumer3 worked with CompanyID = {0}", jobReceived.JobInformation); QT.Entities.Server.ConnectionString = connectionString; CompanyFunctions companyfuncition = new CompanyFunctions(); Company company = new Company(Common.Obj2Int64(jobReceived.JobInformation)); cancelUpdateDataFeedTokenSource = new CancellationTokenSource(); companyfuncition.UpdateDataFeedProducts(company, cancelUpdateDataFeedTokenSource); } } }
static public void LoginGameServer() { CreateScoket(); VertifyUserInfo vertifyUserInfo = new VertifyUserInfo() { token = PlayerManager.self.loginDataCenter.data.token, userId = (long)PlayerManager.self.loginDataCenter.data.accountId, zoneId = 1 }; MarsMessage marsMessage = new MarsMessage() { messageType = MessageConst.Login.TYPE, cmd = MessageConst.Login.REQ_VERTIFY, data = ProtobufTool.Serialize(vertifyUserInfo) }; clientSocket.Send(marsMessage); }
public void Handle(int cmd, byte[] data) { switch (cmd) { case MessageConst.Room.RESP_BEGIN_MATCH: RespBeginMatch respBeginMatch = ProtobufTool.DeSerialize <RespBeginMatch>(data); BeginMatch(respBeginMatch.beginTime); break; case MessageConst.Room.RESP_CANEL_MATCH: RespCancelMatch respCancelMatch = ProtobufTool.DeSerialize <RespCancelMatch>(data); CancelMatch(respCancelMatch.gameResultEnum); break; default: break; } }
public void Handle(int cmd, byte[] data) { switch (cmd) { case MessageConst.Login.RESP_CREATE_ROLE: //CreateRole createRole = ProtobufTool.DeSerialize<CreateRole>(data); actions.Enqueue(CreateRole); break; case MessageConst.Login.RESP_ENTER_GAME: EnterGame enterGame = ProtobufTool.DeSerialize <EnterGame>(data); PlayerManager.self.player = enterGame.player; PlayerManager.self.statusManager = new PlayerStatusManager(); actions.Enqueue(LoginSuccess); break; default: break; } }
// Start is called before the first frame update void Start() { //1.序列化 StoreRequest storeRequest = new StoreRequest(); storeRequest.Name = "goods"; storeRequest.Num = -50; storeRequest.Result = -1; for (int i = 0; i < 50; i++) { string str = $"str{i + 1}"; storeRequest.MyList.Add(str); } byte[] bytes = ProtobufTool.Serialize(storeRequest); //2.反序列化 StoreRequest storeRequestUnSer = ProtobufTool.Deserialize <StoreRequest>(bytes); byte[] maBytes = DeSerialize.Serialize(storeRequest); //2.反序列化 StoreRequest maStoreRequestUnSer = DeSerialize.Serialization <StoreRequest>(maBytes); }
private void ReceiveHead(IAsyncResult ar) { int count = (int)ar.AsyncState; count += socket.EndReceive(ar); //如果头数据长度不够,继续读 if (count < headlen) { socket.BeginReceive(head, count, headlen - count, SocketFlags.None, new AsyncCallback(ReceiveHead), count); } else { //处理一下高低字节位问题 byte[] realBytesLen = new byte[headlen]; for (int i = 0; i < headlen; i++) { realBytesLen[i] = head[headlen - 1 - i]; } int length = ByteUtil.byteArray2Int(realBytesLen, 0); byte[] data = new byte[length];//声明接受数组 count = 0; while (count < length) { int tempLength = socket.Receive(data, count, length - count, SocketFlags.None); count += tempLength; } socket.BeginReceive(head, 0, headlen, SocketFlags.None, new AsyncCallback(ReceiveHead), 0); MarsMessage msg = ProtobufTool.DeSerialize <MarsMessage>(data); //心跳消息直接在本类处理 if (msg.messageType == 1) { Pong pong = ProtobufTool.DeSerialize <Pong>(msg.data); Pong(pong); } else { MessageDispatcher.Receive(msg); } } }
private void buttonSendUpdateRootIDJob_Click(object sender, EventArgs e) { WSS.UpdateRootProductMappingSerivce.UpdateRootProductMappingSerivce.JobRabbitMQ jobname = new WSS.UpdateRootProductMappingSerivce.UpdateRootProductMappingSerivce.JobRabbitMQ() { JobName = "UpdateProductIDToSQL", JobType = 1, JobInformation = textBoxProductID.Text }; Producer producer = new Producer("192.168.100.135", "UpdateProductIDToSQL"); byte[] messagenew = ProtobufTool.Serialize(jobname); if (producer.SendMessage(messagenew)) { Log.InfoFormat("Consumer1 sent message ID : {0}", jobname.JobInformation); } else { Log.ErrorFormat("Consumer1 send message FAILS with ID = {0}", jobname.JobInformation); } producer.Dispose(); }
static public void SendCreateRole(string roleName) { VertifyUserInfo _vertifyUserInfo = new VertifyUserInfo() { token = PlayerManager.self.loginDataCenter.data.token, userId = (long)PlayerManager.self.loginDataCenter.data.accountId, zoneId = 1 }; ReqCreateRole reqCreateRole = new ReqCreateRole() { vertifyUserInfo = _vertifyUserInfo, name = roleName }; MarsMessage marsMessage = new MarsMessage() { messageType = MessageConst.Login.TYPE, cmd = MessageConst.Login.REQ_CREATE_ROLE, data = ProtobufTool.Serialize(reqCreateRole) }; clientSocket.Send(marsMessage); }
private void WriteSendDate(MarsMessage marsMessage) { byte[] msBts = ProtobufTool.Serialize(marsMessage); byte[] data = new byte[msBts.Length + 4]; byte[] lenghtBytes = ByteUtil.int2ByteArray(msBts.Length); for (int i = 0; i < 4; i++) { data[i] = lenghtBytes[3 - i]; } for (int i = 0; i < msBts.Length; i++) { data[i + 4] = msBts[i]; } //!ping if (marsMessage.messageType != 1) { Debug.LogFormat("发送数据,messageType={0},cmd={1},messageLen={2}", marsMessage.messageType, marsMessage.cmd, data.Length); } socket.BeginSend(data, 0, data.Length, SocketFlags.None, callback => { socket.EndSend(callback); //Debug.Log("消息发送成功"); }, socket); }
public void Handle(int cmd, byte[] data) { switch (cmd) { case MessageConst.Battle.RESP_GAME_INIT: //初始化游戏 Debug.Log("开始初始化游戏..."); RespGameInit respGameInit = ProtobufTool.DeSerialize <RespGameInit>(data); BattleStatus.INSTANCE.respGameInit = respGameInit; PlayerManager.self.statusManager.Switch(BattleStatus.INSTANCE); actions.Enqueue(GameInit); break; case MessageConst.Battle.RESP_MOVE_CHESS: RespMoveChess respMoveChess = ProtobufTool.DeSerialize <RespMoveChess>(data); break; case MessageConst.Battle.RESP_CURRENT_GO_INFO: RespCurrentGoInfo respCurrentGoInfo = ProtobufTool.DeSerialize <RespCurrentGoInfo>(data); break; default: break; } }