예제 #1
0
        /// <summary>
        /// Dump all statistics for this connection to the log specified
        /// </summary>
        public void DumpStatisticsToLog(NetLog log)
        {
            Statistics.DumpToLog(log);

            for (int i = 0; i < NetConstants.NumSequenceChannels; i++)
            {
                NetChannel channel = (NetChannel)i;
                if (m_savedReliableMessages[i] != null && m_savedReliableMessages[i].Count > 0)
                {
                    log.Debug("Saved reliable messages left in " + channel + ": " + m_savedReliableMessages[i].Count);
                    foreach (NetMessage mmm in m_savedReliableMessages[i])
                    {
                        log.Debug("... " + mmm + " - next resend time: " + mmm.m_nextResendTime + " numresends: " + mmm.m_numResends);
                    }
                }
            }
            log.Debug("Unsent acknowledges: " + m_unsentAcknowledges.Count);
            log.Debug("Withheld messages: " + m_withheldMessages.Count);
            log.Flush();
        }
예제 #2
0
        /// <summary>
        /// Dump all statistics to log
        /// </summary>
        public void DumpToLog(NetLog log)
        {
            if (log == null)
            {
                return;
            }

            double timespan;

            if (End == 0.0f)
            {
                timespan = NetTime.Now - Start;
            }
            else
            {
                timespan = End - Start;
            }

            log.Debug("--- Statistics for " + m_forConnection + " @ " + NetTime.Now + "--------------");
            log.Debug("Timespan: " + timespan + " seconds");
            log.Debug("Sent " + PacketsSent + " packets (" + FPS(PacketsSent, timespan) + " per second)");
            log.Debug("Sent " + BytesSent + " bytes (" + FPS(BytesSent, timespan) + " per second, " + FPS(BytesSent, (double)PacketsSent) + " per packet, " + FPS(BytesSent, (double)MessagesSent) + " per message)");
            log.Debug("Sent " + MessagesSent + " messages (" + FPS(MessagesSent, timespan) + " per second, " + FPS(MessagesSent, (double)PacketsSent) + " per packet)");

            int libMessagesSent = MessagesSent - (UserMessagesSent + AckMessagesSent);

            log.Debug(" ... of which " + UserMessagesSent + " were user messages (" + FPS(UserMessagesSent, timespan) + " per second)");
            log.Debug(" ... of which " + AckMessagesSent + " were acknowledge messages (" + FPS(AckMessagesSent, timespan) + " per second)");
            log.Debug(" ... of which " + libMessagesSent + " were other system messages (" + FPS(libMessagesSent, timespan) + " per second)");

            log.Debug("Received " + PacketsReceived + " packets (" + FPS(PacketsReceived, timespan) + " per second)");
            log.Debug("Received " + BytesReceived + " bytes (" + FPS(BytesReceived, timespan) + " per second, " + FPS(BytesReceived, (double)PacketsReceived) + " per packet, " + FPS(BytesReceived, (double)MessagesReceived) + " per message)");
            log.Debug("Received " + MessagesReceived + " messages (" + FPS(MessagesReceived, timespan) + " per second, " + FPS(MessagesReceived, (double)PacketsReceived) + " per packet)");

            int libMessagesReceived = MessagesReceived - (UserMessagesReceived + AckMessagesReceived);

            log.Debug(" ... of which " + UserMessagesReceived + " were user messages (" + FPS(UserMessagesReceived, timespan) + " per second)");
            log.Debug(" ... of which " + AckMessagesReceived + " were acknowledge messages (" + FPS(AckMessagesReceived, timespan) + " per second)");
            log.Debug(" ... of which " + libMessagesReceived + " were other system messages (" + FPS(libMessagesReceived, timespan) + " per second)");
            log.Debug("Resent " + MessagesResent + " messages (" + FPS(MessagesResent, timespan) + " per second)");

            try
            {
                // windows specific stuff
                IPGlobalProperties ipProps  = IPGlobalProperties.GetIPGlobalProperties();
                UdpStatistics      udpStats = ipProps.GetUdpIPv4Statistics();

                log.Debug("System wide datagrams sent: " + (udpStats.DatagramsSent - m_sysSent));
                log.Debug("System wide datagrams received: " + (udpStats.DatagramsReceived - m_sysReceived));
            }
            catch (NotSupportedException)
            {
            }
        }
예제 #3
0
		/// <summary>
		/// Dump all statistics for this connection to the log specified
		/// </summary>
		public void DumpStatisticsToLog(NetLog log)
		{
			Statistics.DumpToLog(log);

			for(int i=0;i<NetConstants.NumSequenceChannels;i++)
			{
				NetChannel channel = (NetChannel)i;
				if (m_savedReliableMessages[i] != null && m_savedReliableMessages[i].Count > 0)
				{
					log.Debug("Saved reliable messages left in " + channel + ": " + m_savedReliableMessages[i].Count);
					foreach (NetMessage mmm in m_savedReliableMessages[i])
					{
						log.Debug("... " + mmm + " - next resend time: " + mmm.m_nextResendTime + " numresends: " + mmm.m_numResends);
					}
				}
			}
			log.Debug("Unsent acknowledges: " + m_unsentAcknowledges.Count);
			log.Debug("Withheld messages: " + m_withheldMessages.Count);
			log.Flush();
		}
예제 #4
0
        public int ExecuteSend(NetBase netBase, NetBuffer buffer, NetConnection connection, IPEndPoint remoteEP)
        {
            int len = buffer.LengthBytes;

#if DEBUG
            if (connection != null)
            {
                NetConnectionConfiguration config = connection.Configuration;

                if (config.LossChance > 0.0f && NetRandom.Default.Chance(config.LossChance))
                {
                    //m_log.Debug("(simulating loss of sent packet)");
                    return(len);
                }

                if (config.LagDelayChance > 0.0f && NetRandom.Default.Chance(config.LagDelayChance))
                {
                    float delayAmount = config.LagDelayMinimum + (NetRandom.Default.NextFloat() * config.LagDelayVariance);

                    DelayedPacket pk = new DelayedPacket();
                    pk.Data = new byte[len];
                    Array.Copy(buffer.Data, pk.Data, buffer.LengthBytes);
                    pk.DelayAmount  = delayAmount;
                    pk.DelayedUntil = NetTime.Now + delayAmount;
                    pk.RemoteEP     = remoteEP;
                    m_delayed.Add(pk);

                    //m_log.Debug("(queueing packet for " + (int)(pk.DelayAmount * 1000.0f) + " ms)");

                    return(len);
                }
            }
#endif

            try
            {
                int bytesSent = netBase.m_socket.SendTo(buffer.Data, 0, len, SocketFlags.None, remoteEP);
                m_log.Verbose(string.Format(CultureInfo.InvariantCulture, "Sent {0} bytes to {1}", bytesSent, remoteEP));

#if DEBUG
                if (connection != null)
                {
                    NetConnectionConfiguration config = connection.Configuration;
                    if (NetRandom.Default.Chance(config.DuplicatedPacketChance))
                    {
                        m_log.Debug("(simulating send packet duplication)");
                        netBase.m_socket.SendTo(buffer.Data, 0, buffer.LengthBytes, SocketFlags.None, remoteEP);
                    }
                }
#endif

                return(bytesSent);
            }
            catch (SocketException sex)
            {
                if (sex.SocketErrorCode == SocketError.ConnectionReset ||
                    sex.SocketErrorCode == SocketError.ConnectionRefused ||
                    sex.SocketErrorCode == SocketError.ConnectionAborted)
                {
                    m_log.Warning("Remote socket forcefully closed: " + sex.SocketErrorCode);
                    if (connection != null)
                    {
                        connection.Disconnect("Socket forcefully closed: " + sex.SocketErrorCode);
                    }
                    return(0);
                }

                m_log.Warning("Execute SocketException: " + sex.SocketErrorCode);
                return(0);
            }
        }
예제 #5
0
		/// <summary>
		/// Dump all statistics to log
		/// </summary>
		public void DumpToLog(NetLog log)
		{
			if (log == null)
				return;

			double timespan;
			if (End == 0.0f)
				timespan = NetTime.Now - Start;
			else
				timespan = End - Start;

			log.Debug("--- Statistics for " + m_forConnection + " @ " + NetTime.Now + "--------------");
			log.Debug("Timespan: " + timespan + " seconds");
			log.Debug("Sent " + PacketsSent + " packets (" + FPS(PacketsSent, timespan) + " per second)");
			log.Debug("Sent " + BytesSent + " bytes (" + FPS(BytesSent, timespan) + " per second, " + FPS(BytesSent, (double)PacketsSent) + " per packet, " + FPS(BytesSent, (double)MessagesSent) + " per message)");
			log.Debug("Sent " + MessagesSent + " messages (" + FPS(MessagesSent, timespan) + " per second, " + FPS(MessagesSent, (double)PacketsSent) + " per packet)");

			int libMessagesSent = MessagesSent - (UserMessagesSent + AckMessagesSent);
			log.Debug(" ... of which " + UserMessagesSent + " were user messages (" + FPS(UserMessagesSent, timespan) + " per second)");
			log.Debug(" ... of which " + AckMessagesSent + " were acknowledge messages (" + FPS(AckMessagesSent, timespan) + " per second)");
			log.Debug(" ... of which " + libMessagesSent + " were other system messages (" + FPS(libMessagesSent, timespan) + " per second)");

			log.Debug("Received " + PacketsReceived + " packets (" + FPS(PacketsReceived, timespan) + " per second)");
			log.Debug("Received " + BytesReceived + " bytes (" + FPS(BytesReceived, timespan) + " per second, " + FPS(BytesReceived, (double)PacketsReceived) + " per packet, " + FPS(BytesReceived, (double)MessagesReceived) + " per message)");
			log.Debug("Received " + MessagesReceived + " messages (" + FPS(MessagesReceived, timespan) + " per second, " + FPS(MessagesReceived, (double)PacketsReceived) + " per packet)");

			int libMessagesReceived = MessagesReceived - (UserMessagesReceived + AckMessagesReceived);
			log.Debug(" ... of which " + UserMessagesReceived + " were user messages (" + FPS(UserMessagesReceived, timespan) + " per second)");
			log.Debug(" ... of which " + AckMessagesReceived + " were acknowledge messages (" + FPS(AckMessagesReceived, timespan) + " per second)");
			log.Debug(" ... of which " + libMessagesReceived + " were other system messages (" + FPS(libMessagesReceived, timespan) + " per second)");
			log.Debug("Resent " + MessagesResent + " messages (" + FPS(MessagesResent, timespan) + " per second)");

			try
			{
				// windows specific stuff
				IPGlobalProperties ipProps = IPGlobalProperties.GetIPGlobalProperties();
				UdpStatistics udpStats = ipProps.GetUdpIPv4Statistics();

				log.Debug("System wide datagrams sent: " + (udpStats.DatagramsSent - m_sysSent));
				log.Debug("System wide datagrams received: " + (udpStats.DatagramsReceived - m_sysReceived));
			}
			catch (NotSupportedException)
			{
			}
		}