Example #1
0
        internal void Heartbeat(int netIndex)
        {
            bool needUpdateText = false;
            NetIncomingMessage inc;

            while ((inc = Nets[netIndex].ReadMessage()) != null)
            {
                switch (inc.MessageType)
                {
                case NetIncomingMessageType.StatusChanged:
                    NetConnectionStatus status = (NetConnectionStatus)inc.ReadByte();
                    double delay = -1d;
                    this.TextNetMsgS[netIndex] = status.ToString() + "StatusChanged 延时:" + Nets[netIndex].ServerConnection ?? NetTime.ToReadable(Nets[netIndex].ServerConnection.PingTimeDelay);
                    needUpdateText             = true;
                    break;

                case NetIncomingMessageType.ErrorMessage:
                    this.TextNetMsgS[netIndex] = inc.ReadString() + "ErrorMessage 延时:" + Nets[netIndex].ServerConnection ?? NetTime.ToReadable(Nets[netIndex].ServerConnection.PingTimeDelay);
                    needUpdateText             = true;
                    break;
                }
            }

            // send message?
            if (NetTime.Now > m_lastSent[netIndex] + c_sendFrequency)
            {
                var om = Nets[netIndex].CreateMessage();
                om.Write("Hi!");
                Nets[netIndex].SendMessage(om, NetDeliveryMethod.ReliableOrdered);
                m_lastSent[netIndex] = NetTime.Now;

                // also update title
#if DEBUG
                /*this.Text*/ this.TextNetMsgS[netIndex] = Nets[netIndex].Statistics.SentBytes + " bytes sent; " + Nets[netIndex].Statistics.ReceivedBytes + " bytes received";
                //if (needUpdateText) {
                TextNetMsgSB.Remove(0, TextNetMsgSB.Length);
                for (int i = 0; i < TextNetMsgS.Length; i++)
                {
                    TextNetMsgSB.AppendLine(TextNetMsgS[i]);
                }
                this.label1.Text = TextNetMsgSB.ToString();
                //}
#else
                string str = Nets[netIndex].ServerConnection == null ? "No connection" : Nets[netIndex].ServerConnection.Status.ToString();
                //if (this.TextNetMsgS[netIndex] != str) {
                if (Nets[netIndex].ServerConnection != null)
                {
                    this.TextNetMsgS[netIndex] = str + " 延时:" + NetTime.ToReadable(Nets[netIndex].ServerConnection.PingTimeDelay);
                    needUpdateText             = true;
                }
                //if (needUpdateText) {
                //TextNetMsgSB.Remove(0, TextNetMsgSB.Length);
                //for (int i = 0; i < TextNetMsgS.Length; i++) {
                //    TextNetMsgSB.AppendLine(TextNetMsgS[i]);
                //}
                //this.label1.Text = TextNetMsgSB.ToString();
                //}
#endif
            }
        }
Example #2
0
        protected void UpdateServerConnectionState(
            NetConnectionStatus s,
            NetIncomingMessage message,
            MessagePipe pipe)
        {
            switch (s)
            {
            case NetConnectionStatus.Connected:
                Log.Debug("player connected: {connection}", message.SenderConnection);
                OnClientConnectionSuccessful?.Invoke(message.SenderConnection);
                break;

            case NetConnectionStatus.Disconnected:
                Log.Debug("player disconnected: {connection}", message.SenderConnection);
                OnClientDisconnected?.Invoke(message.SenderConnection);
                break;

            case NetConnectionStatus.Disconnecting:
            case NetConnectionStatus.InitiatedConnect:
            case NetConnectionStatus.None:
            case NetConnectionStatus.ReceivedInitiation:
            case NetConnectionStatus.RespondedConnect:
            case NetConnectionStatus.RespondedAwaitingApproval:
                break;
            }


            Log.Information("Updated connection status: " + s.ToString());
        }
Example #3
0
        public string GetHelp()
        {
            string t_msg = "Normal Connection.";

            if (m_status == NetConnectionStatus.Connected)
            {
                t_msg = "Connect succeed.";
            }
            else if (m_status == NetConnectionStatus.Disconnected)
            {
                t_msg = "Your connection was disable, please check Network Setting in Console.";
            }
            else if (m_status == NetConnectionStatus.MediaDisconnected)
            {
                t_msg = "Cable had bad contact with Network Card! Please check it.";
            }
            else if (m_status == NetConnectionStatus.InvalidAddress)
            {
                t_msg = "IP address is Invalid, please check DHCP/Router or IP setting.";
            }
            else
            {
                t_msg = string.Format("NetConnectionStatus is {0}", m_status.ToString());
            }

            return(t_msg);
        }
Example #4
0
        public void Parse(NetIncomingMessage mes)
        {
            switch (mes.MessageType)
            {
            case NetIncomingMessageType.ConnectionApproval:
                mes.SenderConnection.Approve();
                break;

            case NetIncomingMessageType.WarningMessage:
                Logman.Log(mes.ReadString());
                break;

            case NetIncomingMessageType.StatusChanged:
                NetConnectionStatus stat = (NetConnectionStatus)mes.ReadByte();
                Logman.Log(mes.SenderEndPoint.Address.ToString() + ": " + stat.ToString(), LOG_TYPE.WARNING);
                if (stat == NetConnectionStatus.Connected)
                {
                    Logman.Log("New client connected, broadcasting connection.");
                    BroadcastNewConnection(mes.SenderConnection);
                    if (NewClientConnected != null)
                    {
                        NewClientConnected.Invoke(mes.SenderConnection);
                    }
                }
                break;

            case NetIncomingMessageType.Data:
                ParseData(mes);
                break;
            }
        }
Example #5
0
 void OnClientStatusChanged(NetConnectionStatus inNewStatus, NetIncomingMessage inMsg)
 {
     Console.WriteLine(inMsg.SenderConnection + ": " + inNewStatus.ToString());
     if (inNewStatus == NetConnectionStatus.Connected)
     {
         OnClientConnected?.Invoke(inMsg.SenderConnection);
     }
 }
        static void StartClient()
        {
            client.Start();
            client.DiscoverLocalPeers(8081);
            NetOutgoingMessage hail = client.CreateMessage("This is the hail message");


            NetIncomingMessage message;

            while (true)
            {
                message = client.WaitMessage(500);
                if (message != null)
                {
                    switch (message.MessageType)
                    {
                    case NetIncomingMessageType.DiscoveryResponse:
                        Console.WriteLine("(Client) Got response from server.");
                        client.Connect(message.SenderEndPoint, hail);
                        Console.WriteLine("(Client) Attempting to connect to server...");
                        break;

                    case NetIncomingMessageType.DebugMessage:
                        Console.WriteLine(message.ReadString());
                        break;

                    case NetIncomingMessageType.ErrorMessage:
                        Console.WriteLine(message.ReadString());
                        break;

                    case NetIncomingMessageType.WarningMessage:
                        Console.WriteLine(message.ReadString());
                        break;

                    case NetIncomingMessageType.VerboseDebugMessage:
                        Console.WriteLine(message.ReadString());
                        break;

                    case NetIncomingMessageType.Data:
                        string chat = message.ReadString();
                        break;

                    case NetIncomingMessageType.StatusChanged:
                        NetConnectionStatus status = (NetConnectionStatus)message.ReadByte();
                        Console.WriteLine(status.ToString());
                        break;

                    default:
                        Console.ForegroundColor = ConsoleColor.Cyan;
                        Console.WriteLine("(Client) Unrecognized message type! (" + message.MessageType + ")");
                        break;
                    }
                }
                client.Recycle(message);
            }
        }
        public static void GotMessage(object peer)
        {
            NetClient s_client = peer as NetClient;
            //foreach (var s_client in s_clients) {
            NetIncomingMessage im;

            while ((im = s_client.ReadMessage()) != null)
            {
                // handle incoming message
                switch (im.MessageType)
                {
                case NetIncomingMessageType.DebugMessage:
                case NetIncomingMessageType.ErrorMessage:
                case NetIncomingMessageType.WarningMessage:
                case NetIncomingMessageType.VerboseDebugMessage:
                    string text = im.ReadString();
                    Output(s_client.Port.ToString() + " recevied:" + text);
                    break;

                case NetIncomingMessageType.StatusChanged:
                    NetConnectionStatus status = (NetConnectionStatus)im.ReadByte();

                    if (status == NetConnectionStatus.Connected)
                    {
                        s_form.EnableInput();
                    }
                    else
                    {
                        s_form.DisableInput();
                    }

                    if (status == NetConnectionStatus.Disconnected)
                    {
                        s_form.button2.Text = "Connect";
                    }

                    string reason = im.ReadString();
                    Output(status.ToString() + ": " + reason);

                    break;

                case NetIncomingMessageType.Data:
                    string chat = im.ReadString();
                    Output(s_client.Port.ToString() + " recevied:" + chat);
                    break;

                default:
                    Output("Unhandled type: " + im.MessageType + " " + im.LengthBytes + " bytes");
                    break;
                }
                s_client.Recycle(im);
                //}
            }
        }
Example #8
0
        private static void GotMessage(object peer)
        {
            var client = ((CClient)peer);
            var msg    = client.ReadMessage();

            switch (msg.MessageType)
            {
            case NetIncomingMessageType.DiscoveryResponse:
                string name = msg.ReadString();
                var    s    = new FoundServer()
                {
                    EndPoint = msg.SenderEndPoint, Name = name
                };

                if (client.callback != null)
                {
                    client.callback.Invoke(s);
                }
                break;

            case NetIncomingMessageType.StatusChanged:
                NetConnectionStatus status = (NetConnectionStatus)msg.ReadByte();
                string statusText          = msg.ReadString();
                Main.Log("[STATUS UPDATE] " + status + " - " + statusText);
                if (status == NetConnectionStatus.Connected)
                {
                    Main.SetStatus("Connected to " + msg.SenderEndPoint.Address);
                    Main.Log("Connected!");
                    Net.UponClientConnected();
                }
                else if (status == NetConnectionStatus.Disconnected)
                {
                    Main.Log("Disconnected from server. Reason: " + statusText);
                    Net.UponClientDisconnected();
                    MessageBox.Show("Disconnected from server: " + statusText, "Disconnected", MessageBoxButtons.OK);
                }
                else
                {
                    Main.SetStatus(status.ToString());
                }
                break;

            case NetIncomingMessageType.Data:
                var type = (DataType)msg.ReadByte();
                ProcessData(type, msg, client);
                break;

            default:
                Main.Log("[CLIENT UNHANDLED] Type: " + msg.MessageType);
                break;
            }

            client.Recycle(msg);
        }
Example #9
0
 private void HandleStatusChange(NetConnectionStatus status, NetConnection connection, NetIncomingMessage incomingMessage)
 {
     if (_statusChangeHandlers.ContainsKey(status))
     {
         _statusChangeHandlers[status](connection, incomingMessage);
     }
     else
     {
         loggingService.Log($"Could not handle {status.ToString()} status message", LogMessageType.WARNING);
     }
 }
Example #10
0
        public void GotMessage(object peer)
        {
            NetIncomingMessage im;

            while ((im = _client.ReadMessage()) != null)
            {
                // handle incoming message
                switch (im.MessageType)
                {
                case NetIncomingMessageType.DebugMessage:
                case NetIncomingMessageType.ErrorMessage:
                case NetIncomingMessageType.WarningMessage:
                case NetIncomingMessageType.VerboseDebugMessage:
                    string text = im.ReadString();
                    OnMessage(text);
                    break;

                case NetIncomingMessageType.StatusChanged:
                    NetConnectionStatus status = (NetConnectionStatus)im.ReadByte();

                    if (status == NetConnectionStatus.Connected)
                    {
                        OnMessage("Connected");
                        SendMessage("play", "data");
                    }
                    if (status == NetConnectionStatus.Disconnected)
                    {
                        OnMessage("Disconnected");
                    }
                    string reason = im.ReadString();
                    OnMessage(status.ToString() + ": " + reason);

                    break;

                case NetIncomingMessageType.Data:
                    ProcessMessage(im.ReadString());
                    string data = im.ReadString();
                    if (!String.IsNullOrEmpty(data))
                    {
                        KeyValue <string> x = new KeyValue <string>(data);
                        OnMessage("data from client - key:" + x.key + " value:" + x.value);
                    }
                    //OnMessage(chat);
                    break;

                default:
                    OnMessage("Unhandled type: " + im.MessageType + " " + im.LengthBytes + " bytes");
                    break;
                }
                _client.Recycle(im);
            }
        }
Example #11
0
        /// <summary>
        /// Is callback
        /// </summary>
        protected void CheckMessageFromServer(object peer)
        {
            NetIncomingMessage im;

            if ((im = s_client.ReadMessage()) != null)
            {
                // handle incoming message
                switch (im.MessageType)
                {
                case NetIncomingMessageType.DebugMessage:
                case NetIncomingMessageType.ErrorMessage:
                case NetIncomingMessageType.WarningMessage:
                case NetIncomingMessageType.VerboseDebugMessage:
                    if (UIText != null)
                    {
                        string text = im.ReadString();
                        UIText.text = text;
                    }
                    break;

                case NetIncomingMessageType.StatusChanged:
                    NetConnectionStatus status = (NetConnectionStatus)im.ReadByte();

                    //if (status != NetConnectionStatus.Connected)
                    //    Connect("localhost", 14242);
                    if (UIText != null)
                    {
                        string reason = im.ReadString();
                        UIText.text = status.ToString() + ": " + reason;
                    }
                    break;

                case NetIncomingMessageType.Data:
                    string chat = im.ReadString();
                    {
                        if (mapVisualisator != null)     // not destroyed yet
                        {
                            mapVisualisator.ReceiveNetData(chat);
                        }
                    }
                    break;

                default:
                    UIText.text = "Unhandled type: " + im.MessageType + " " + im.LengthBytes + " bytes";
                    break;
                }
                s_client.Recycle(im);
            }
        }
Example #12
0
        private static void Application_Idle(object sender, EventArgs e)
        {
            while (NativeMethods.AppStillIdle)
            {
                NetIncomingMessage im;
                while ((im = s_client.ReadMessage()) != null)
                {
                    // handle incoming message
                    switch (im.MessageType)
                    {
                    case NetIncomingMessageType.DebugMessage:
                    case NetIncomingMessageType.ErrorMessage:
                    case NetIncomingMessageType.WarningMessage:
                    case NetIncomingMessageType.VerboseDebugMessage:
                        string text = im.ReadString();
                        Output(text);
                        break;

                    case NetIncomingMessageType.StatusChanged:
                        NetConnectionStatus status = (NetConnectionStatus)im.ReadByte();

                        if (status == NetConnectionStatus.Connected)
                        {
                            s_form.EnableInput();
                        }
                        else
                        {
                            s_form.DisableInput();
                        }
                        string reason = im.ReadString();
                        Output(status.ToString() + ": " + reason);

                        break;

                    case NetIncomingMessageType.Data:
                        string chat = im.ReadString();
                        Output(chat);
                        break;

                    default:
                        Output("Unhandled type: " + im.MessageType + " " + im.LengthBytes + " bytes");
                        break;
                    }
                }
                Thread.Sleep(1);
            }
        }
Example #13
0
        internal void HandleIncomingMessage(NetIncomingMessage msg)
        {
            switch (msg.MessageType)
            {
            case NetIncomingMessageType.VerboseDebugMessage:
            case NetIncomingMessageType.DebugMessage:
                Console.WriteLine("[DEBUG] {0}", msg.ReadString());
                break;

            case NetIncomingMessageType.WarningMessage:
                Console.WriteLine("[WARNING] {0}", msg.ReadString());
                break;

            case NetIncomingMessageType.ErrorMessage:
                Console.WriteLine("[ERROR] {0}", msg.ReadString());
                break;

            // data messages
            case NetIncomingMessageType.Data:
                //HandleDataMessage(msg);
                break;

            // client connect / disconnect
            case NetIncomingMessageType.StatusChanged:
                NetConnectionStatus status = (NetConnectionStatus)msg.ReadByte();

                if (status == NetConnectionStatus.Connected)
                {
                    OnConnected(msg.SenderConnection);
                }
                else if (status == NetConnectionStatus.Disconnected)
                {
                    OnDisconnected(msg.SenderConnection);
                }

                string reason = msg.ReadString();
                Console.WriteLine("[CONN] {0}", status.ToString() + ": " + reason);
                break;

            default:
                Console.WriteLine("[ERROR] Unhandled message type: {0} ({1} bytes)", msg.MessageType, msg.LengthBytes);
                break;
            }
        }
Example #14
0
        public void GotMessage()
        {
            NetIncomingMessage message;

            Console.Write("");


            message = client.ReadMessage();
            if (message != null)
            {
                switch (message.MessageType)
                {
                case NetIncomingMessageType.DebugMessage:
                case NetIncomingMessageType.ErrorMessage:
                case NetIncomingMessageType.WarningMessage:
                case NetIncomingMessageType.VerboseDebugMessage:
                case NetIncomingMessageType.StatusChanged:
                    NetConnectionStatus status = (NetConnectionStatus)message.ReadByte();
                    Console.WriteLine("Status changed to " + status.ToString());
                    break;

                case NetIncomingMessageType.Data:
                {
                    var data = message.ReadString();
                    Console.WriteLine(data);

                    if (data == "exit")
                    {
                        //TODO: exit later
                    }

                    break;
                }

                default:
                    Console.WriteLine("Unhandled message type: {message.MessageType}");
                    break;
                }
            }
        }
Example #15
0
        internal void Heartbeat()
        {
            NetIncomingMessage inc;

            while ((inc = Net.ReadMessage()) != null)
            {
                switch (inc.MessageType)
                {
                case NetIncomingMessageType.StatusChanged:
                    NetConnectionStatus status = (NetConnectionStatus)inc.ReadByte();
                    this.Text = status.ToString();
                    break;

                case NetIncomingMessageType.ErrorMessage:
                    this.Text = inc.ReadString();
                    break;
                }
            }

            // send message?
            if (NetTime.Now > m_lastSent + c_sendFrequency)
            {
                var om = Net.CreateMessage();
                om.Write("Hi!");
                Net.SendMessage(om, NetDeliveryMethod.ReliableOrdered);
                m_lastSent = NetTime.Now;

                // also update title
#if DEBUG
                this.Text = Net.Statistics.SentBytes + " bytes sent; " + Net.Statistics.ReceivedBytes + " bytes received";
#else
                string str = Net.ServerConnection == null ? "No connection" : Net.ServerConnection.Status.ToString();
                if (this.Text != str)
                {
                    this.Text = str;
                }
#endif
            }
        }
Example #16
0
        public void ReadStatus(NetIncomingMessage message)
        {
            NetConnectionStatus status  = (NetConnectionStatus)message.ReadByte();
            NetworkChannel      channel = (NetworkChannel)message.SequenceChannel;

            if (message.SequenceChannel < 0 || message.SequenceChannel > 32)
            {
                channel = NetworkChannel.LOGIN;
            }
            NetworkConnection connection = GetConnection(this, message);

            Debug.Log($"Network status changed {status.ToString()}");
            if (status == NetConnectionStatus.Connected)
            {
                OnConnectionCreate(this, message.SenderConnection);
            }
            if (status == NetConnectionStatus.Disconnected)
            {
                OnDisconnect(this, connection, message);
            }
            connection?.GetNetworkHandler(channel).OnStatusChange(status);
        }
Example #17
0
        private void ProcessNetworkMessages()
        {
            NetIncomingMessage inc;

            while ((inc = server.ReadMessage()) != null)
            {
                switch (inc.MessageType)
                {
                case NetIncomingMessageType.StatusChanged:
                    NetConnectionStatus status = (NetConnectionStatus)inc.ReadByte();
                    switch (status)
                    {
                    case NetConnectionStatus.Connected:
                        Logger.InfoFormat("{0} Connected", inc.SenderEndpoint);
                        break;

                    case NetConnectionStatus.Disconnected:
                        sessions.Remove(inc.SenderConnection);
                        Logger.InfoFormat("{0} Disconnected", inc.SenderEndpoint);
                        break;

                    case NetConnectionStatus.Disconnecting:
                    case NetConnectionStatus.InitiatedConnect:
                    case NetConnectionStatus.RespondedConnect:
                        Logger.Debug(status.ToString());
                        break;
                    }
                    break;

                //Check for client attempting to connect
                case NetIncomingMessageType.ConnectionApproval:

                    NetOutgoingMessage hailMessage;
                    string             username = null;
                    if (world.EnterWorld(inc, out hailMessage, out username))
                    {
                        sessions.Add(inc.SenderConnection, new Session(inc.SenderConnection, this, username));
                        inc.SenderConnection.Approve(hailMessage);
                    }
                    else
                    {
                        inc.SenderConnection.Deny("Wrong version !");
                    }

                    break;

                case NetIncomingMessageType.Data:
                    Session session = null;
                    if (sessions.TryGetValue(inc.SenderConnection, out session))
                    {
                        session.HandlePacket(inc);
                    }
                    break;

                case NetIncomingMessageType.VerboseDebugMessage:
                case NetIncomingMessageType.DebugMessage:
                    Logger.Debug(inc.ReadString());
                    break;

                case NetIncomingMessageType.WarningMessage:
                    Logger.Warn(inc.ReadString());
                    break;

                case NetIncomingMessageType.ErrorMessage:
                    Logger.Error(inc.ReadString());
                    break;
                }
                server.Recycle(inc);
            }
        }
        /// <summary>
        /// Method for Receiving Messages kept in a Global Scope for the Engine.
        /// </summary>
        /// <param name="peer">Peer.</param>
        public void GotMessage(object peer)
        {
            NetIncomingMessage im;

            while ((im = MasterSeverClient.ReadMessage()) != null)
            {
                // handle incoming message
                switch (im.MessageType)
                {
                case NetIncomingMessageType.DebugMessage:
                case NetIncomingMessageType.ErrorMessage:
                case NetIncomingMessageType.WarningMessage:
                case NetIncomingMessageType.VerboseDebugMessage:
                    string text = im.ReadString();
                    vxConsole.WriteNetworkLine(im.MessageType + " : " + text);
                    break;

                case NetIncomingMessageType.StatusChanged:
                    NetConnectionStatus status = (NetConnectionStatus)im.ReadByte();

                    if (status == NetConnectionStatus.Connected)
                    {
                        MasterServerConnectionStatus = vxEnumNetworkConnectionStatus.Running;
                    }
                    else
                    {
                        MasterServerConnectionStatus = vxEnumNetworkConnectionStatus.Stopped;
                    }

                    if (status == NetConnectionStatus.Disconnected)
                    {
                        MasterServerConnectionStatus = vxEnumNetworkConnectionStatus.Stopped;
                    }

                    string reason = im.ReadString();
                    vxConsole.WriteNetworkLine(status.ToString() + " : " + reason);

                    break;

                case NetIncomingMessageType.Data:

                    // incoming chat message from a client
                    string chat = im.ReadString();

                    //Split the Text By Carriage Return
                    string[] result = chat.Split(new string[] { "\n", "\r\n" }, StringSplitOptions.RemoveEmptyEntries);

                    switch (result[0])
                    {
                    case "vrtx_serverList":
                        vxConsole.WriteNetworkLine("Server List Recieved");

                        if (GameServerListRecieved != null)
                        {
                            GameServerListRecieved(this, new vxGameServerListRecievedEventArgs(result));
                        }

                        break;
                    }
                    break;

                default:
                    vxConsole.WriteNetworkLine("Unhandled type: " + im.MessageType + " " + im.LengthBytes + " bytes");
                    break;
                }
                MasterSeverClient.Recycle(im);
            }
        }
Example #19
0
        private static void Application_Idle(object sender, EventArgs e)
        {
            while (NativeMethods.AppStillIdle)
            {
                NetIncomingMessage im;
                while ((im = s_client.ReadMessage()) != null)
                {
                    // handle incoming message
                    switch (im.MessageType)
                    {
                    case NetIncomingMessageType.DebugMessage:
                    case NetIncomingMessageType.ErrorMessage:
                    case NetIncomingMessageType.WarningMessage:
                    case NetIncomingMessageType.VerboseDebugMessage:
                        string text = im.ReadString();
                        Output(text);
                        break;

                    case NetIncomingMessageType.StatusChanged:
                        NetConnectionStatus status = (NetConnectionStatus)im.ReadByte();
                        string reason = im.ReadString();
                        Output(status.ToString() + ": " + reason);
                        s_form.Text = "Speed test client: " + status.ToString();
                        break;

                    case NetIncomingMessageType.Data:
                        //string chat = im.ReadString();
                        //Output(chat);
                        break;

                    default:
                        Output("Unhandled type: " + im.MessageType);
                        break;
                    }
                    s_client.Recycle(im);
                }

                float now = (float)NetTime.Now;
                if (now > s_lastUpdatedTitle + s_titleUpdateInterval)
                {
                    s_form.Text        = "Speed test client: " + (s_client.ServerConnection != null ? s_client.ServerConnection.Status.ToString() : "(no connection)") + " " + NetUtility.ToHumanReadable(s_sentBytes) + " bytes sent";
                    s_lastUpdatedTitle = now;
                }

                if (s_client.ServerConnection != null && s_client.ServerConnection.Status == NetConnectionStatus.Connected)
                {
                    //
                    // Saturate the line
                    //
                    int windowSize, freeWindowSlots;
                    s_client.ServerConnection.GetSendQueueInfo(s_method, s_sequenceChannel, out windowSize, out freeWindowSlots);

                    // queue up to double window size
                    if (windowSize == 0)
                    {
                        freeWindowSlots = 1;
                    }

                    int num = 0;
                    while (freeWindowSlots > -windowSize)
                    {
                        // send random data
                        int size = s_client.Configuration.MaximumTransmissionUnit - 30;
                        NetOutgoingMessage om  = s_client.CreateMessage(size);
                        byte[]             tmp = new byte[size];
                        MWCRandom.Instance.NextBytes(tmp);
                        int slot = (int)s_method + s_sequenceChannel;
                        om.Write(s_nextSendNumber[slot]);
                        s_nextSendNumber[slot]++;
                        om.Write(tmp);

                        // queue message for sending
                        NetSendResult res = s_client.SendMessage(om, s_method, s_sequenceChannel);
                        if (s_method != NetDeliveryMethod.Unreliable && s_method != NetDeliveryMethod.UnreliableSequenced)
                        {
                            if (res != NetSendResult.Queued && res != NetSendResult.Sent)
                            {
                                throw new NetException("Got res " + res);
                            }
                        }
                        s_sentBytes += size;

                        freeWindowSlots--;
                        num++;
                    }
                    //Console.WriteLine("Queued " + num + " messages");

                    //
                    // Send every X millisecond
                    //

                    /*
                     * if (now > s_lastSend + s_sendInterval)
                     * {
                     *
                     *      // send random data
                     *      int size = s_client.Configuration.MaximumTransmissionUnit - 25;
                     *      NetOutgoingMessage om = s_client.CreateMessage(size);
                     *      byte[] tmp = new byte[size];
                     *      NetRandom.Instance.NextBytes(tmp);
                     *      int slot = (int)s_method + s_sequenceChannel;
                     *      om.Write(s_nextSendNumber[slot]);
                     *      s_nextSendNumber[slot]++;
                     *      om.Write(tmp);
                     *
                     *      // queue message for sending
                     *      NetSendResult res = s_client.SendMessage(om, s_method, s_sequenceChannel);
                     *      if (res != NetSendResult.Queued && res != NetSendResult.Sent)
                     *              throw new NetException("Got res " + res);
                     *      //Console.WriteLine("Res: " + res);
                     *      s_sentBytes += size;
                     *
                     *      s_lastSend = now;
                     * }
                     */
                }

                Thread.Sleep(0);
            }
        }
Example #20
0
        /// <summary>
        /// Handles StatusChangedMessages
        /// </summary>
        /// <param name="msg"></param>
        public void StatusChange(NetIncomingMessage msg)
        {
            NetConnectionStatus status = (NetConnectionStatus)msg.ReadByte();
            switch (status)
            {
                case NetConnectionStatus.Disconnected:
                    Disconnected(msg);
                    break;

                case NetConnectionStatus.Connected:
                    Connected(msg);
                    break;

                default:
                    Debug.WriteLine(string.Format(Properties.strings.managerUnhandledStatusChange, status.ToString()));
                    break;
            }
        }
Example #21
0
            public void read()
            {
                while (client.Status == NetPeerStatus.Running && !ctSource.Token.IsCancellationRequested)
                {
                    WaitHandle.WaitAny(new WaitHandle[] { client.MessageReceivedEvent, ctSource.Token.WaitHandle });
                    NetIncomingMessage im;
                    while ((im = client.ReadMessage()) != null && !ctSource.IsCancellationRequested)
                    {
                        switch (im.MessageType)
                        {
                        case NetIncomingMessageType.DebugMessage:
                        case NetIncomingMessageType.ErrorMessage:
                        case NetIncomingMessageType.WarningMessage:
                        case NetIncomingMessageType.VerboseDebugMessage:
                        case NetIncomingMessageType.Data:
                            try
                            {
                                if (alg != null)
                                {
                                    im.Decrypt(alg);
                                }
                                MemoryStream ms = new MemoryStream(im.Data);
                                ProtoMessage m  = null;
                                try
                                {
                                    m = Serializer.DeserializeWithLengthPrefix <ProtoMessage>(ms, PrefixStyle.Fixed32);
                                }
                                catch (Exception e)
                                {
                                    // Attempt to read string and add to message queue
                                    string s = im.ReadString();
                                    if (!string.IsNullOrWhiteSpace(s))
                                    {
                                        Console.WriteLine("CLIENT: Got message: " + s);

                                        tClient.stringMessageQueue.Enqueue(s);
                                    }
                                }
                                if (m != null)
                                {
                                    Console.WriteLine("CLIENT: Got ProtoMessage with ActionType: " + m.ActionType + " and response type: " + m.ResponseType);
                                    if (m.ResponseType == DisplayMessages.LogInSuccess)
                                    {
                                        loggedIn = true;
                                        tClient.protobufMessageQueue.Enqueue(m);
                                    }
                                    else
                                    {
                                        if (m.ActionType == Actions.Update)
                                        {
                                            // Don't do anything at the moment for updates
                                        }
                                        else
                                        {
                                            tClient.protobufMessageQueue.Enqueue(m);
                                            if (m.ActionType == Actions.LogIn && m.ResponseType == DisplayMessages.None)
                                            {
                                                byte[] key = null;
                                                if (ValidateCertificateAndCreateKey(m as ProtoLogIn, out key))
                                                {
                                                    ComputeAndSendHashAndKey(m as ProtoLogIn, key);
                                                }
                                            }
                                            else
                                            {
                                                // Attempt to read string and add to message queue
                                                string s = im.ReadString();
                                                if (!string.IsNullOrWhiteSpace(s))
                                                {
                                                    tClient.stringMessageQueue.Enqueue(s);
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                            catch (Exception e)
                            {
                                Globals_Server.logError("Error in reading data: " + e.GetType() + " :" + e.Message + "; Stack Trace: " + e.StackTrace);
                            }
                            break;

                        case NetIncomingMessageType.StatusChanged:

                            NetConnectionStatus status = (NetConnectionStatus)im.ReadByte();
                            Console.WriteLine("CLIENT: Status changed to " + status.ToString());
                            //MemoryStream ms2 = new MemoryStream(im.SenderConnection.RemoteHailMessage.Data);
                            if (status == NetConnectionStatus.Connected)
                            {
                                if (im.SenderConnection.RemoteHailMessage != null)
                                {
                                    try
                                    {
                                        MemoryStream ms2 = new MemoryStream(im.SenderConnection.RemoteHailMessage.Data);
                                        ProtoMessage m   = Serializer.DeserializeWithLengthPrefix <ProtoMessage>(ms2, PrefixStyle.Fixed32);
                                        if (m != null)
                                        {
                                            tClient.protobufMessageQueue.Enqueue(m);
                                            if (m.ActionType == Actions.LogIn && m.ResponseType == DisplayMessages.None)
                                            {
                                                byte[] key = null;
                                                if (ValidateCertificateAndCreateKey(m as ProtoLogIn, out key))
                                                {
                                                    if (autoLogIn)
                                                    {
                                                        ComputeAndSendHashAndKey(m as ProtoLogIn, key);
                                                    }
                                                }
                                                else
                                                {
                                                    Console.WriteLine("Certificate validation failed: Server may be untrusted");
                                                    client.Disconnect("Invalid Certificate");
                                                }
                                            }
                                        }
                                    }
                                    catch (Exception e)
                                    {
                                    }
                                }
                                break;
                            }
                            else if (status == NetConnectionStatus.Disconnected)
                            {
                                string reason = im.ReadString();
                                if (!string.IsNullOrEmpty(reason))
                                {
                                    tClient.stringMessageQueue.Enqueue(reason);
                                }
                            }
                            if (im.SenderConnection.RemoteHailMessage != null && (NetConnectionStatus)im.ReadByte() == NetConnectionStatus.Connected)
                            {
                            }
                            break;

                        case NetIncomingMessageType.ConnectionLatencyUpdated:
                            break;

                        default:
                            break;
                        }
                        client.Recycle(im);
                    }
                }
#if DEBUG
                Globals_Server.logEvent("Client listening thread ends");
#endif
            }
Example #22
0
        private void PrivProcessData()
        {
            NetIncomingMessage buff;

            while ((_connection.ReadMessage(out buff)) == true)
            {
                NetIncomingMessageType type = buff.MessageType;
                switch (type)
                {
                case NetIncomingMessageType.DebugMessage:
                    string debug1 = buff.ReadString();
                    Debug.WriteLine(debug1);
                    break;

                case NetIncomingMessageType.VerboseDebugMessage:
                    string debug2 = buff.ReadString();
                    Debug.WriteLine(debug2);
                    break;

                case NetIncomingMessageType.WarningMessage:
                    string warning = buff.ReadString();
                    Debug.WriteLine(warning);
                    break;

                case NetIncomingMessageType.ErrorMessage:
                    Debug.WriteLine(buff.ReadString());
                    break;

                case NetIncomingMessageType.StatusChanged:
                    NetConnectionStatus status = (NetConnectionStatus)buff.ReadByte();
                    string reason = buff.ReadString();
                    Debug.WriteLine(status.ToString() + ": " + reason);
                    break;

                case NetIncomingMessageType.Data:

                    int t;

                    if (buff.ReadInt32(out t))
                    {
                        switch ((DataItem.DATA_TYPE)t)
                        {
                        case DataItem.DATA_TYPE.ACK_TYPE:

                            break;

                        case DataItem.DATA_TYPE.EVENT_TYPE:
                            EventData event_d = new EventData();
                            event_d.Deserialize(ref buff);
                            DataManager.PushToIn(new DataItem(DataItem.DATA_TYPE.EVENT_TYPE, event_d));
                            break;

                        case DataItem.DATA_TYPE.INPUT_TYPE:
                            InputData input = new InputData();
                            input.Deserialize(ref buff);
                            DataManager.PushToIn(new DataItem(DataItem.DATA_TYPE.INPUT_TYPE, input));
                            break;

                        case DataItem.DATA_TYPE.SIM_DATA:
                            SimData sim = new SimData();
                            sim.Deserialize(ref buff);
                            DataManager.PushToIn(new DataItem(DataItem.DATA_TYPE.SIM_DATA, sim));
                            break;

                        case DataItem.DATA_TYPE.STATE_TYPE:
                            StateData state = new StateData();
                            state.Deserialize(ref buff);
                            DataManager.PushToIn(new DataItem(DataItem.DATA_TYPE.STATE_TYPE, state));
                            break;
                        }
                    }

                    break;

                case NetIncomingMessageType.UnconnectedData:
                    Debug.WriteLine("Recv(" + buff.SenderEndPoint + "): " + buff.ReadString());
                    break;

                case NetIncomingMessageType.DiscoveryResponse:
                    Debug.WriteLine("Found server at " + buff.SenderEndPoint + " name: " + buff.ReadString());
                    _connection.Connect(buff.SenderEndPoint);
                    break;
                }

                _connection.Recycle(buff);
            }
        }
Example #23
0
        public virtual void Connect(string host, int port, string name, string password)
        {
            client.Connect(host, port, CreateApprovalRequest(password));

            //read client number
            int   i = 0;
            short n = -1;

            byte[] classes = null;

            while (i++ < 100)
            {
                Thread.Sleep(100);

                NetIncomingMessage m;
                while ((m = client.ReadMessage()) != null)
                {
                    switch (m.MessageType)
                    {
                    case NetIncomingMessageType.VerboseDebugMessage:
                    case NetIncomingMessageType.DebugMessage:
                    case NetIncomingMessageType.WarningMessage:
                    case NetIncomingMessageType.ErrorMessage:
                        Console.WriteLine(m.ReadString());
                        break;

                    case NetIncomingMessageType.Data:
                    {
                        if (m.LengthBytes == 2)
                        {
                            n = m.ReadInt16();
                            System.Console.WriteLine(n);
                            break;
                        }
                        else if (m.PeekUInt32() == 0xFFFFFFFF)
                        {
                            m.ReadUInt32();
                            classes = m.ReadBytes(m.LengthBytes - 4);
                            System.Console.WriteLine("received class dictionary: " + classes.Length);
                            break;
                        }
                        else if (m.PeekUInt32() == 0xFFFFFFFE)
                        {
                            m.ReadUInt32();
                            compress = m.ReadBoolean();
                            Console.WriteLine("compression: " + compress);
                        }

                        Console.WriteLine("skip: " + m.LengthBytes);
                    }
                    break;

                    case NetIncomingMessageType.StatusChanged:
                        NetConnectionStatus status = (NetConnectionStatus)m.ReadByte();
                        Console.WriteLine("status: " + status.ToString());
                        switch (status)
                        {
                        case NetConnectionStatus.InitiatedConnect:
                            break;

                        case NetConnectionStatus.Connected:
                            break;
                        }
                        break;

                    default:
                        Console.WriteLine("Unhandled type: " + m.MessageType);
                        break;
                    }
                    client.Recycle(m);

                    /*else if (m.SequenceChannel == NetChannel.ReliableUnordered)
                     * {
                     *  classes = m.ReadBytes(m.Length);
                     *  System.Console.WriteLine("received class dictionary: " + classes.Length);
                     * }*/
                }
                if (classes != null && n != -1)
                {
                    break;
                }
            }
            if (n == -1)
            {
                throw new Exception();
            }
            if (n > 16)
            {
                throw new Exception();
            }

            Root.Instance.Factory = new Factory(new MemoryStream(classes));

            Console.WriteLine("connected to server: clientnumber: " + n);
            ClientNumber = n;
        }
Example #24
0
        private void OnRecvMessage()
        {
            m_NetClient.MessageReceivedEvent.WaitOne(1000);
            NetIncomingMessage im;

            while ((im = m_NetClient.ReadMessage()) != null)
            {
                switch (im.MessageType)
                {
                case NetIncomingMessageType.DebugMessage:
                case NetIncomingMessageType.VerboseDebugMessage:
                    LogSystem.Debug("Debug Message: {0}", im.ReadString());
                    break;

                case NetIncomingMessageType.ErrorMessage:
                    LogSystem.Debug("Error Message: {0}", im.ReadString());
                    break;

                case NetIncomingMessageType.WarningMessage:
                    LogSystem.Debug("Warning Message: {0}", im.ReadString());
                    break;

                case NetIncomingMessageType.StatusChanged:
                    NetConnectionStatus status = im.SenderConnection.Status;

                    string reason = im.ReadString();
                    LogSystem.Debug("Network Status Changed:{0} Reason:{1}\nStatistic:{2}", status.ToString(), reason, im.SenderConnection.Statistics.ToString());
                    if (NetConnectionStatus.Disconnected == status)
                    {
                        m_IsConnected = false;
                    }
                    else if (NetConnectionStatus.Connected == status)
                    {
                        OnConnected(im.SenderConnection);
                    }
                    break;

                case NetIncomingMessageType.Data:
                    if (m_IsConnected == false)
                    {
                        break;
                    }
                    try {
                        object msg = Serialize.Decode(im.ReadBytes(im.LengthBytes));
                        if (msg != null)
                        {
                            PushMsg(msg, im.SenderConnection);
                        }
                    } catch (Exception ex) {
                        GfxSystem.GfxLog("Decode Message exception:{0}\n{1}", ex.Message, ex.StackTrace);
                    }
                    break;

                default:
                    break;
                }
                m_NetClient.Recycle(im);
            }
        }
Example #25
0
        private void OnRecvMessage()
        {
            m_NetClient.MessageReceivedEvent.WaitOne(1000);
            NetIncomingMessage im;

            while ((im = m_NetClient.ReadMessage()) != null)
            {
                switch (im.MessageType)
                {
                case NetIncomingMessageType.DebugMessage:
                case NetIncomingMessageType.VerboseDebugMessage:
                    LogSystem.Debug("{0} Debug Message: {1} {2}", Robot.LobbyNetworkSystem.User, im.ReadString(), LobbyRobot.Robot.GetDateTime());
                    break;

                case NetIncomingMessageType.ErrorMessage:
                    LogSystem.Debug("{0} Error Message: {1} {2}", Robot.LobbyNetworkSystem.User, im.ReadString(), LobbyRobot.Robot.GetDateTime());
                    break;

                case NetIncomingMessageType.WarningMessage:
                    LogSystem.Debug("{0} Warning Message: {1} {2}", Robot.LobbyNetworkSystem.User, im.ReadString(), LobbyRobot.Robot.GetDateTime());
                    break;

                case NetIncomingMessageType.StatusChanged:
                    NetConnectionStatus status = (NetConnectionStatus)im.ReadByte();
                    string reason = im.ReadString();
                    if (null != im.SenderConnection)
                    {
                        LogSystem.Debug("{0} Network Status Changed:{1} Reason:{2} {3}", Robot.LobbyNetworkSystem.User, status.ToString(), reason, LobbyRobot.Robot.GetDateTime());
                        if (NetConnectionStatus.Disconnected == status)
                        {
                            m_IsConnected    = false;
                            m_WaitDisconnect = false;
                            m_CanSendMessage = false;
                        }
                        else if (NetConnectionStatus.Connected == status)
                        {
                            OnConnected(im.SenderConnection);
                        }
                    }
                    else
                    {
                        LogSystem.Debug("{0} Network Status Changed:{1} reason:{2}", Robot.LobbyNetworkSystem.User, status, reason);
                    }
                    break;

                case NetIncomingMessageType.Data:
                case NetIncomingMessageType.UnconnectedData:
                    if (!m_IsConnected && NetIncomingMessageType.Data == im.MessageType)
                    {
                        break;
                    }
                    try
                    {
                        byte[] data = im.ReadBytes(im.LengthBytes);
                        object msg  = Serialize.Decode(data);
                        if (msg != null)
                        {
                            PushMsg(msg, im.SenderConnection);
                        }
                    }
                    catch (Exception ex)
                    {
                        LogSystem.Error("{0} Decode Message exception:{1}\n{2}", Robot.LobbyNetworkSystem.User, ex.Message, ex.StackTrace);
                    }
                    break;

                default:
                    break;
                }
                m_NetClient.Recycle(im);
            }
        }
Example #26
0
        private void ProcessNetworkMessages()
        {
            NetIncomingMessage inc;

            while ((inc = client.ReadMessage()) != null)
            {
                switch (inc.MessageType)
                {
                //Report changes in connection status
                case NetIncomingMessageType.StatusChanged:
                    NetConnectionStatus status = (NetConnectionStatus)inc.ReadByte();
                    switch (status)
                    {
                    case NetConnectionStatus.Connected:
                        /*var message = new UpdatePlayerStateMessage(inc.SenderConnection.RemoteHailMessage);
                         * this.playerManager.AddPlayer(message.Id, message.Position, message.Velocity, message.Rotation, true);
                         * Console.WriteLine("Connected to {0}", inc.SenderEndPoint);*/
                        ConnectionSuccess("Connected to " + inc.SenderEndpoint);
                        break;

                    case NetConnectionStatus.Disconnected:
                        if (Entry.UserInterace != null && Entry.UserInterace.Chat != null)
                        {
                            Entry.UserInterace.Chat.Log("Lost connection to the server !");
                        }

                        string reason = "Unknown error !";
                        try
                        {
                            inc.ReadByte();
                            reason = inc.ReadString();
                        }
                        catch
                        {
                        }

                        ConnectionFailed(reason);
                        break;

                    case NetConnectionStatus.Disconnecting:
                    case NetConnectionStatus.InitiatedConnect:
                    case NetConnectionStatus.RespondedConnect:
                        Console.WriteLine(status.ToString());
                        break;
                    }
                    break;

                case NetIncomingMessageType.ConnectionApproval:

                    break;

                case NetIncomingMessageType.Data:
                    handler.Handle(inc);
                    break;

                case NetIncomingMessageType.VerboseDebugMessage:
                case NetIncomingMessageType.DebugMessage:
                case NetIncomingMessageType.WarningMessage:
                case NetIncomingMessageType.ErrorMessage:
                    Console.WriteLine(inc.ReadString());
                    break;
                }
                client.Recycle(inc);
            }
        }
        private void processIncomingMessages()
        {
            if (_peer != null)
            {
                NetIncomingMessage im;

                while ((im = _peer.ReadMessage()) != null)
                {
                    switch (im.MessageType)
                    {
                    case NetIncomingMessageType.DebugMessage:
                    case NetIncomingMessageType.ErrorMessage:
                    case NetIncomingMessageType.WarningMessage:
                    case NetIncomingMessageType.VerboseDebugMessage:
                        string text = im.ReadString();
                        _game.addMessage(text);
                        break;

                    case NetIncomingMessageType.StatusChanged:
                        NetConnectionStatus status = (NetConnectionStatus)im.ReadByte();

                        if (status == NetConnectionStatus.Connected)
                        {
                            if (_role == NetRole.Client)
                            {
                                _game.addMessage("Connected to server!");
                            }
                            else
                            {
                                _game.addMessage("Client connected!");
                            }
                        }
                        else
                        {
                            _game.addMessage(status.ToString() + ": " + im.ReadString());
                        }
                        break;

                    case NetIncomingMessageType.Data:
                        MessageType messageType = (MessageType)im.ReadInt32();

                        if (messageType == MessageType.UpdateDynamicBodies)
                        {
                            receiveDynamicBodiesUpdate(im);
                        }
                        else if (messageType == MessageType.CreateMouseJoint)
                        {
                            receiveCreateMouseJoint(im);
                        }
                        else if (messageType == MessageType.DestroyMouseJoint)
                        {
                            receiveDestroyMouseJoint(im);
                        }
                        else if (messageType == MessageType.MoveMouseJoint)
                        {
                            receiveMoveMouseJoint(im);
                        }
                        break;

                    default:
                        _game.addMessage("Unhandled message type: " + im.MessageType);
                        break;
                    }
                    _peer.Recycle(im);
                }
            }
        }
Example #28
0
        private INSTANCE_TYPE PrivInitialize()
        {
            Console.WriteLine("\n****************\nEnter IP Address\n****************\n");
            Console.ForegroundColor = ConsoleColor.Yellow;
            _server_ip = Console.ReadLine();

            NetPeerConfiguration config = new NetPeerConfiguration("ServerClientClient");

            config.AcceptIncomingConnections = true;

            config.MaximumConnections = 100;

            config.MaximumHandshakeAttempts = 3;

            config.ResendHandshakeInterval = 0.5f;

            config.EnableMessageType(NetIncomingMessageType.DiscoveryResponse);

            _connection = new NetClient(config);
            Debug.Assert(_connection != null);

            _connection.Start();

            System.Net.IPEndPoint ep = NetUtility.Resolve(_server_ip, _server_port);

            NetIncomingMessage pInMsg;

            _connection.Connect(ep);

            bool connected = false;

            while (connected == false)
            {
                if ((pInMsg = _connection.ReadMessage()) != null)
                {
                    NetIncomingMessageType type = pInMsg.MessageType;
                    switch (type)
                    {
                    case NetIncomingMessageType.DebugMessage:
                        string debug1 = pInMsg.ReadString();
                        Debug.WriteLine(debug1);
                        break;

                    case NetIncomingMessageType.VerboseDebugMessage:
                        string debug2 = pInMsg.ReadString();
                        Debug.WriteLine(debug2);
                        break;

                    case NetIncomingMessageType.WarningMessage:
                        string warning = pInMsg.ReadString();
                        Debug.WriteLine(warning);
                        break;

                    case NetIncomingMessageType.ErrorMessage:
                        Debug.WriteLine(pInMsg.ReadString());
                        break;

                    case NetIncomingMessageType.StatusChanged:
                        NetConnectionStatus status = (NetConnectionStatus)pInMsg.ReadByte();
                        string reason = pInMsg.ReadString();
                        Debug.WriteLine(status.ToString() + ": " + reason);

                        if (status == NetConnectionStatus.Disconnected)
                        {
                            Debug.WriteLine("Server timeout. Becoming Server.");
                            _connection.Shutdown("");
                            InitializeServer();
                            connected = true;
                        }
                        else if (status == NetConnectionStatus.Connected)
                        {
                            Debug.WriteLine("Server found.");
                            InitializeClient();
                            connected = true;
                        }

                        break;

                    case NetIncomingMessageType.UnconnectedData:
                        Debug.WriteLine("Recv(" + pInMsg.SenderEndPoint + "): " + pInMsg.ReadString());
                        break;

                    case NetIncomingMessageType.DiscoveryResponse:
                        Debug.WriteLine("Found server at " + pInMsg.SenderEndPoint + " name: " + pInMsg.ReadString());
                        _connection.Connect(pInMsg.SenderEndPoint);
                        break;
                    }
                }

                _connection.Recycle(pInMsg);
            }

            return(_connection_type);
        }
Example #29
0
        private void receiveMessage()
        {
            NetIncomingMessage im;

            while ((im = session.ReadMessage()) != null)
            {
                switch (im.MessageType)
                {
                case NetIncomingMessageType.DebugMessage:
                case NetIncomingMessageType.ErrorMessage:
                case NetIncomingMessageType.WarningMessage:
                case NetIncomingMessageType.VerboseDebugMessage:
                    Console.WriteLine(im.ReadString() + "\n");
                    break;

                case NetIncomingMessageType.UnconnectedData:
                    Console.WriteLine(im.ReadString());
                    break;

                case NetIncomingMessageType.StatusChanged:
                    NetConnectionStatus status = (NetConnectionStatus)im.ReadByte();

                    // When a new player connects, the host is charged to find a suitable default name between player1 and player4
                    // depending on what names are available. The host then sends the new list of player names to the other players
                    if (status == NetConnectionStatus.Connected)
                    {
                        /*packetWriter = session.CreateMessage();
                         * packetWriter.Write((Byte)ConnectedMessageType.Chat);
                         * packetWriter.Write("Hello");
                         * session.SendMessage(packetWriter, im.SenderConnection, NetDeliveryMethod.ReliableOrdered);*/
                    }

                    if (status == NetConnectionStatus.Disconnected)
                    {
                    }
                    // Don't need this for now
                    string reason = im.ReadString();
                    Console.WriteLine(status.ToString() + ": " + reason);
                    break;

                case NetIncomingMessageType.Data:
                    ConnectedMessageType connectedMessageType = (ConnectedMessageType)im.ReadByte();
                    switch (connectedMessageType)
                    {
                    case ConnectedMessageType.EndRoundInfo:
                        packetWriter = session.CreateMessage();
                        packetWriter.Write((Byte)ConnectedMessageType.EndRoundInfo);
                        packetWriter.Write(im.ReadString());
                        session.SendMessage(packetWriter, im.SenderConnection, NetDeliveryMethod.ReliableOrdered);
                        break;

                    case ConnectedMessageType.Ping:
                        packetWriter = session.CreateMessage();
                        packetWriter.Write((Byte)ConnectedMessageType.PingReply);
                        session.SendMessage(packetWriter, session.Connections, NetDeliveryMethod.ReliableOrdered, 0);
                        break;

                    case ConnectedMessageType.PingReply:
                        pingSent = false;
                        Console.WriteLine(watch.ElapsedMilliseconds);
                        break;
                    }
                    break;

                default:
                    Console.WriteLine("Unhandled type: " + im.MessageType + " " + im.LengthBytes + " bytes \n");
                    break;
                }
            }
        }
Example #30
0
        public static int TimeToSaveDB;                 // temps d'interval pour sauveguarder la BDD

        public static void Main(string[] args)
        {
            // initialisation PetaPoco

            DataBase.DataTables.IniPetaPoco();
            Console.WriteLine("Initialisation PetaPoco [ok]");        // BDD en interne sous forme de liste au lieu de se connecter a chaque fois à la BDD

            CommonCode.ReadConfigFile();

            NetPeerConfiguration config = new NetPeerConfiguration("the-morpher");

            config.Port = Port;
            config.MaximumConnections = MaximumConnections;
            //config.PingInterval = 100;
            //config.ConnectionTimeout = 600;
            //config.PingInterval = 1F;
            config.ConnectionTimeout = ConnectionTimeout;

            netServer = new NetServer(config);
            netServer.Start();

            Console.WriteLine("Initialisatoin network [ok]");

            // Thread pour supprimer les utilisateurs resté bloqués dans la table Connected
            Thread tCleanTableConnected = new Thread(new ThreadStart(CleanTableConnected));

            tCleanTableConnected.Start();

            // Thread pour la supression des utilisateurs dans ClientData.Client qui ont dépassé le time stamp de 15min
            Thread tChkConnUsr = new Thread(new ThreadStart(chkConnUsr));

            tChkConnUsr.Start();

            // thread pour l'augementation des pdv apres chaque 2 seconds
            Thread tUpdatePdv = new Thread(new ThreadStart(UpdatePdv));

            tUpdatePdv.Start();

            // thread pour le lancement du combat apres x temps seulement si un combat est en mode initialisation
            Thread tBattleLauncher = new Thread(new ThreadStart(BattleLauncher));

            tBattleLauncher.Start();

            Thread tCleanePlayersStats = new Thread(new ThreadStart(CleanPlayersStats));

            tCleanePlayersStats.Start();

            // nétoyage de la bdd
            DataBase.DataTables.dataContext.Execute("TRUNCATE connected");
            DataBase.DataTables.dataContext.Execute("TRUNCATE Logerror");
            DataBase.DataTables.dataContext.Execute("TRUNCATE logCounter");
            DataBase.DataTables.dataContext.Execute("delete from MapObj where state='dynamic'");
            DataBase.DataTables.dataContext.Execute("update players set inBattle ='0', inBattleType ='', inBattleID=''");

            Console.WriteLine("Nétoyage de la BDD [ok]");

            Console.WriteLine((DataBase.DataTables.classes as List <mysql.classes>).Count + " classes chargés");

            /*foreach (mysql.classes a in DataBase.DataTables.classes)
             *  Console.WriteLine("{0} - {1}", a.id, a.classeName);*/

            Thread saveDB = new Thread(new ThreadStart(UpdateDB));

            saveDB.Start();
            Console.WriteLine("Boucle regénération Pdv [ok]");

            Console.WriteLine("Lancement boucle réseau [ok]");
            Console.WriteLine("____________________________________");
            while (!Console.KeyAvailable)
            {
                NetIncomingMessage im;
                while ((im = netServer.ReadMessage()) != null)
                {
                    // handle incoming message
                    switch (im.MessageType)
                    {
                    case NetIncomingMessageType.DebugMessage:
                    //Console.WriteLine(im.ReadString());
                    //break;
                    case NetIncomingMessageType.ErrorMessage:
                    //Console.WriteLine(im.ReadString());
                    //break;
                    case NetIncomingMessageType.WarningMessage:
                    //Console.WriteLine(im.ReadString());
                    //break;
                    case NetIncomingMessageType.VerboseDebugMessage:
                    //Console.WriteLine(im.ReadString());
                    //break;
                    case NetIncomingMessageType.StatusChanged:
                        try
                        {
                            NetConnectionStatus status = (NetConnectionStatus)im.ReadByte();
                            string reason = im.ReadString();
                            if (status.ToString() == "Connected")
                            {
                                server_NewConnection(im);
                            }
                            else if (status.ToString() == "Disconnected")
                            {
                                server_LostConnection(im, reason);
                            }
                        }
                        catch
                        {
                            //Console.WriteLine (ex.ToString ());
                        }
                        break;

                    case NetIncomingMessageType.Data:
                        im.Decrypt(algo);
                        Network.GetData(im);
                        break;

                    default:
                        Console.WriteLine("Unhandled type: " + im.MessageType + " " + im.LengthBytes + " bytes " + im.DeliveryMethod + "|" + im.SequenceChannel);
                        break;
                    }
                }
                Thread.Sleep(200);
            }
            Console.WriteLine("Le programme a sortie de la boucle réseau !!!!!!!!!!!\nRelancer le programme si c'est pas planifié");
            tChkConnUsr.Abort();
            tCleanTableConnected.Abort();
            tUpdatePdv.Abort();
            tBattleLauncher.Abort();
            tCleanePlayersStats.Abort();
        }