public void ProcessUNetMessage(byte[] rawPacket) { var unetBytes = UNetMessage.Deserialize(rawPacket); var reader = new NetworkReader(unetBytes); while (reader.Position < unetBytes.Length) { var msg = new NetworkMessage(); msg.msgSeqNum = reader.ReadUInt32(); var msgSize = reader.ReadUInt16(); msg.msgType = reader.ReadInt16(); var buffer = reader.ReadBytes(msgSize); msg.reader = new NetworkReader(buffer); var deserialized = Deserialize(msg, buffer); if (deserialized != null) { if (_handlers.ContainsKey(deserialized.msgType)) { if (deserialized.GetType() != typeof(AssetsLoadingProgress)) { Log.Print(LogType.Game, $"{deserialized.GetType().Name} - {JsonConvert.SerializeObject(deserialized)}"); } _handlers[deserialized.msgType].Invoke(deserialized); } else { Log.Print(LogType.Warning, $"Unhandled {msg.msgType}:{deserialized.GetType().Name} - {JsonConvert.SerializeObject(deserialized)}"); } } } }
public void Deserialize(short msgType, string hex) { var writer = new NetworkWriter(); writer.StartMessage(msgType); writer.WriteBytesFull(Utils.ToByteArray(hex)); writer.FinishMessage(); Serializer.ProcessUNetMessages(UNetMessage.Serialize(writer.ToArray())); }
public ReplayPacketProvider(string path) : base(path) { Replay = ReplayFile.FromJson(File.ReadAllText(path)); for (uint pktId = 0; pktId < Replay.Messages.Length; pktId++) { var msg = Replay.Messages[pktId]; ProcessRawUnet(pktId, msg.Timestamp, PacketDirection.FromServer, UNetMessage.Serialize(msg.Data)); } }
public async Task SendWSMessage(byte[] bytes, int count) { var responseStream = new MemoryStream(); responseStream.Write(bytes, 0, count); using (var writer = Socket.CreateMessageWriter(WebSocketMessageType.Binary)) { await writer.WriteAsync(UNetMessage.Serialize(responseStream.ToArray())); await writer.FlushAsync(); } }
public async Task SendWSMessage(NetworkWriter msg) { var responseStream = new MemoryStream(); responseStream.Write(msg.AsArraySegment().Array, 0, msg.AsArraySegment().Count); using (var writer = Socket.CreateMessageWriter(WebSocketMessageType.Binary)) { await writer.WriteAsync(UNetMessage.Serialize(responseStream.ToArray())); await writer.FlushAsync(); } }
private void OnGUI() { if (UNetTestSataic.isReady) { if (UNetTestSataic.isServer) { if (GUI.Button(new Rect(100, 100, 150, 100), "Server test")) { MsgTest msg = new MsgTest(); msg.msg = "test msg"; uNetServer.SendMessageToAllClients((short)MessageCommand.CMD_TO_CLIENT, msg, UNetBase.RELIABLE); /* * int client = Random.Range(0, uNetMain.connectionsToClients.Count); * DebugLogMain.Log("Send to Client " + client.ToString()); * uNetMain.SendMessageToClient((uint)client, (short)MessageCommand.CMD_TO_CLIENT, msg); */ } if (GUI.Button(new Rect(320, 100, 150, 100), "Run another Program.")) { System.Diagnostics.Process.Start("E:/Projects/HenryTool/Build/Network/PC/PC.exe"); } } else { if (GUI.Button(new Rect(100, 100, 150, 100), "Client test")) { UNetMessage msg = new UNetMessage(); //msg.msg = "test server msg"; int length = Random.Range(1, 5); MsgStrct[] al = new MsgStrct[length]; for (int i = 0; i < length; i++) { MsgStrct us; us.id = (uint)i; us.name = "N" + i.ToString(); us.position = new Vector3(Random.Range(1, 50), Random.Range(1, 50), Random.Range(1, 50)); al[i] = us; } msg.msgs = al; uNetClient.SendMessageToServer((short)MessageCommand.CMD_TO_SERVER, msg, UNetBase.RELIABLE); } } } }
public void ProcessUNetMessages(byte[] rawPacket) { var unetBytes = UNetMessage.Deserialize(rawPacket); var reader = new NetworkReader(unetBytes); while (reader.Position < unetBytes.Length) { var msg = new NetworkMessage(); msg.msgSeqNum = reader.ReadUInt32(); var msgSize = reader.ReadUInt16(); msg.msgType = reader.ReadInt16(); var buffer = reader.ReadBytes(msgSize); msg.reader = new NetworkReader(buffer); ProcessUnetMessage(msg); } }
private void OnGUI() { if (UNetTestSataic.isReady) { if (UNetTestSataic.isServer) { if (GUI.Button(new Rect(100, 100, 150, 100), "Server test")) { MsgTest msg = new MsgTest(); msg.msg = "test msg"; uServer.SendMessageToAllClients((short)MessageCommand.CMD_TO_CLIENT, msg, UNetBase.RELIABLE); } if (GUI.Button(new Rect(300, 100, 150, 100), "Show Server IP address.")) { //System.Diagnostics.Process.Start("E:/Projects/HenryTool/Build/Network/PC/PC.exe"); uServer.uLog(IPManager.GetIPv4()); } if (GUI.Button(new Rect(500, 100, 150, 100), "Clear")) { DebugLogMain.logManager.ClearLog(); } } else { if (GUI.Button(new Rect(100, 100, 150, 100), "Client test")) { UNetMessage msg = new UNetMessage(); //msg.msg = "test server msg"; int length = Random.Range(1, 5); MsgStrct[] al = new MsgStrct[length]; for (int i = 0; i < length; i++) { MsgStrct us; us.id = (uint)i; us.name = "N" + i.ToString(); //us.position = new Vector3(Random.Range(1, 50), Random.Range(1, 50), Random.Range(1, 50)); us.position = new Vector3(aRandomFloat, aRandomFloat, aRandomFloat); al[i] = us; } msg.msgs = al; uClient.SendMessageToServer((short)MessageCommand.CMD_TO_SERVER, msg, UNetBase.RELIABLE); } if (GUI.Button(new Rect(300, 100, 150, 100), "Client value")) { MsgLite msg = new MsgLite(); msg.value = (int)aRandomFloat; uClient.SendMessageToServer((short)MessageCommand.TEST_MSG, msg, UNetBase.RELIABLE); } if (GUI.Button(new Rect(500, 100, 150, 100), "Clear")) { DebugLogMain.logManager.ClearLog(); } } } }