Beispiel #1
0
        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));
            }
        }
Beispiel #4
0
        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();
            }
        }
Beispiel #5
0
        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();
            }
        }
Beispiel #6
0
    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);
                }
            }
        }
    }
Beispiel #7
0
        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);
            }
        }
Beispiel #8
0
    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();
                }
            }
        }
    }