예제 #1
0
        private void ReceivePing(S2CPacket packet)
        {
            var idDiff = packet.PacketId - lastReceivedPingId;

            if (idDiff > 1 && idDiff < ReceivePacketWindowSize)
            {
                NetworkStats.LogLostPings(idDiff - 1);
            }
            if (idDiff > 0 || idDiff < -ReceivePacketWindowSize)
            {
                lastReceivedPingId = packet.PacketId;
            }
            byte[] pongData = new byte[2];
            NetUtil.H2N(packet.PacketId, pongData, 0);
            AddOutgoingPacket(pongData, PacketType.Pong);
        }
예제 #2
0
        private void ReceivePing(S2CPacket packet)
        {
            var idDiff = packet.PacketId - lastReceivedPingId;

            if (idDiff > 1 && idDiff < ReceivePacketWindowSize)
            {
                NetworkStats.LogLostPings(idDiff - 1);
            }
            if (idDiff > 0 || idDiff < -ReceivePacketWindowSize)
            {
                lastReceivedPingId = packet.PacketId;
            }
            byte[] pongData = new byte[2];             // stackalloc
            BinaryPrimitives.WriteUInt16BigEndian(pongData.AsSpan(), packet.PacketId);
            AddOutgoingPacket(pongData, PacketType.Pong);
        }