コード例 #1
0
        private void ReceiveIncomingPackets()
        {
            if (!Connected || !Initialized)
            {
                throw new Exception("[IDNS-Client] Error Running Server Tick.");
            }
            byte err;
            int  connectionId;
            int  channelId;

            byte[] recBuffer  = new byte[MaxPacketSize];
            int    bufferSize = MaxPacketSize;
            int    dataSize;
            byte   error;
            int    size = NetworkTransport.GetIncomingMessageQueueSize(_HostId, out err) + 1;

            for (int i = 0; i < size; i++)
            {
                NetworkEventType recData = NetworkTransport.ReceiveFromHost(_HostId, out connectionId, out channelId, recBuffer, bufferSize, out dataSize, out error);
                switch (recData)
                {
                case NetworkEventType.Nothing:             //1
                    break;

                case NetworkEventType.ConnectEvent:        //2
                    break;

                case NetworkEventType.DataEvent:           //3
                    break;

                case NetworkEventType.DisconnectEvent:     //4
                    break;
                }
            }
        }
コード例 #2
0
ファイル: NetworkPeer.cs プロジェクト: YeeB3Warned/OSFPS
        public NetworkStats GetNetworkStats(int?connectionId)
        {
            byte errorAsByte;

            var networkStats = new NetworkStats
            {
                RecentOutgoingBandwidthInBytes     = bandwidthAverager.OutgoingBandwidthInBytes,
                IncomingPacketCountForAllHosts     = NetworkTransport.GetIncomingPacketCountForAllHosts(),
                IncomingPacketDropCountForAllHosts = NetworkTransport.GetIncomingPacketDropCountForAllHosts(),
                NetworkTimestamp         = NetworkTransport.GetNetworkTimestamp(),
                OutgoingFullBytesCount   = NetworkTransport.GetOutgoingFullBytesCount(),
                OutgoingMessageCount     = NetworkTransport.GetOutgoingMessageCount(),
                OutgoingPacketCount      = NetworkTransport.GetOutgoingPacketCount(),
                OutgoingSystemBytesCount = NetworkTransport.GetOutgoingSystemBytesCount(),
                OutgoingUserBytesCount   = NetworkTransport.GetOutgoingUserBytesCount(),
            };

            if (socketId.HasValue)
            {
                networkStats.IncomingMessageQueueSize        = NetworkTransport.GetIncomingMessageQueueSize(socketId.Value, out errorAsByte);
                networkStats.OutgoingFullBytesCountForHost   = NetworkTransport.GetOutgoingFullBytesCountForHost(socketId.Value, out errorAsByte);
                networkStats.OutgoingMessageCountForHost     = NetworkTransport.GetOutgoingMessageCountForHost(socketId.Value, out errorAsByte);
                networkStats.OutgoingMessageQueueSize        = NetworkTransport.GetOutgoingMessageQueueSize(socketId.Value, out errorAsByte);
                networkStats.OutgoingPacketCountForHost      = NetworkTransport.GetOutgoingPacketCountForHost(socketId.Value, out errorAsByte);
                networkStats.OutgoingSystemBytesCountForHost = NetworkTransport.GetOutgoingSystemBytesCountForHost(socketId.Value, out errorAsByte);
                networkStats.OutgoingUserBytesCountForHost   = NetworkTransport.GetOutgoingUserBytesCountForHost(socketId.Value, out errorAsByte);

                if (connectionId.HasValue)
                {
                    networkStats.AckBufferCount                        = NetworkTransport.GetAckBufferCount(socketId.Value, connectionId.Value, out errorAsByte);
                    networkStats.CurrentRTT                            = NetworkTransport.GetCurrentRTT(socketId.Value, connectionId.Value, out errorAsByte);
                    networkStats.IncomingPacketCount                   = NetworkTransport.GetIncomingPacketCount(socketId.Value, connectionId.Value, out errorAsByte);
                    networkStats.IncomingPacketLossCount               = NetworkTransport.GetIncomingPacketLossCount(socketId.Value, connectionId.Value, out errorAsByte);
                    networkStats.MaxAllowedBandwidth                   = NetworkTransport.GetMaxAllowedBandwidth(socketId.Value, connectionId.Value, out errorAsByte);
                    networkStats.OutgoingFullBytesCountForConnection   = NetworkTransport.GetOutgoingFullBytesCountForConnection(socketId.Value, connectionId.Value, out errorAsByte);
                    networkStats.OutgoingMessageCountForConnection     = NetworkTransport.GetOutgoingMessageCountForConnection(socketId.Value, connectionId.Value, out errorAsByte);
                    networkStats.OutgoingPacketCountForConnection      = NetworkTransport.GetOutgoingPacketCountForConnection(socketId.Value, connectionId.Value, out errorAsByte);
                    networkStats.OutgoingPacketNetworkLossPercent      = NetworkTransport.GetOutgoingPacketNetworkLossPercent(socketId.Value, connectionId.Value, out errorAsByte);
                    networkStats.OutgoingPacketOverflowLossPercent     = NetworkTransport.GetOutgoingPacketOverflowLossPercent(socketId.Value, connectionId.Value, out errorAsByte);
                    networkStats.OutgoingSystemBytesCountForConnection = NetworkTransport.GetOutgoingSystemBytesCountForConnection(socketId.Value, connectionId.Value, out errorAsByte);
                    networkStats.OutgoingUserBytesCountForConnection   = NetworkTransport.GetOutgoingUserBytesCountForConnection(socketId.Value, connectionId.Value, out errorAsByte);
                }
            }

            return(networkStats);
        }
コード例 #3
0
    void fresh()
    {
        int              outHostId;
        int              outConnectionId;
        int              outChannelId;
        string           outConnIp;
        int              outPort;
        NetworkID        outID;
        NodeID           outNode;
        int              receivedSize;
        byte             error;
        int              quesize;
        NetworkEventType evt;
        int              dog = 0;

        do
        {
            dog++;

            evt =
                NetworkTransport.Receive(out outHostId, out outConnectionId, out outChannelId, buffer, buffer.Length, out receivedSize, out error);
            quesize = NetworkTransport.GetIncomingMessageQueueSize(outHostId, out error);
            if (error != 0)
            {
                Debug.LogError("Receive error=" + error + "quesize=" + quesize);
            }
            switch (evt)
            {
            case NetworkEventType.ConnectEvent:
            {
                NetworkTransport.GetConnectionInfo(outHostId, outConnectionId, out outConnIp, out outPort, out outID, out outNode, out error);
                connectionClient.Add(outConnectionId, new StrTxt(Instantiate(text), outConnIp, true));
                OnConnect(outHostId, outConnectionId, (NetworkError)error);
                break;
            }

            case NetworkEventType.DisconnectEvent:
            {
                OnDisconnect(outHostId, outConnectionId, (NetworkError)error);
                break;
            }

            case NetworkEventType.DataEvent:
            {
                OnData(outHostId, outConnectionId, outChannelId, ref buffer, receivedSize, (NetworkError)error);
                break;
            }

            case NetworkEventType.BroadcastEvent:
            {
                OnBroadcast(outHostId, buffer, receivedSize, (NetworkError)error);
                break;
            }

            case NetworkEventType.Nothing:
                break;

            default:
                Debug.LogError("Unknown network message type received: " + evt);
                break;
            }
        }while (dog < 30 && quesize != 0);
    }