public void Start(NetServer server_, string saveFilename_, GamePlatform platform_)
 {
     server = server_;
     saveFilename = saveFilename_;
     platform = platform_;
     mainThreadActionsLock = platform.MonitorCreate();
 }
Exemple #2
0
        static void testNetClient()
        {
            NetServer server = new NetServer(9556);
            server.ClientConnected.Subscribe(tracked =>
            {
                Console.WriteLine("[SERVER]: Client connected.");
                tracked.Value.MessageRecieved.Subscribe(
                    next_msg => Console.WriteLine("[SERVER]: Client Message: " + Encoding.UTF8.GetString(next_msg.Message)),
                    next_err => Console.WriteLine("[SERVER]: Client Read Error: " + next_err.Message),
                    () => Console.WriteLine("[SERVER]: Client Disconnected."));

                var sClient = tracked.Observe();
                sClient.Write(Encoding.UTF8.GetBytes("Hello, new client!"));
            });
            server.Start();

            NetClient client = new NetClient("localhost", 9556);
            client.MessageRecieved.Subscribe(
                next_msg => Console.WriteLine("[CLIENT]: Server Message: " + Encoding.UTF8.GetString(next_msg.Message)),
                next_err => Console.WriteLine("[CLIENT]: Server Read Error: " + next_err.Message),
                () => Console.WriteLine("[CLIENT]: Server Disconnected."));
            client.Connect();
            Console.WriteLine("[CLIENT]: Connected.");

            client.Write(Encoding.UTF8.GetBytes("Hello back!!!"));

            Console.ReadLine();
        }
        public void StartListening()
        {
            if (nS != null && nS.IsOnline)
                nS.Stop();

            nS = new NetServer();
            nS.EchoMode = NetEchoMode.EchoAll;
            nS.OnClientConnected += nS_OnClientConnected;
            nS.OnClientDisconnected += nS_OnClientDisconnected;
            nS.OnReceived +=nS_OnReceived;

            try
            {
                nS.Start(IPAddress.Any, SERVERPORT);
            }
            catch (SocketException e)
            {
                MessageBox.Show("This port it's already in use, select a new one!", "Port already in use", MessageBoxButton.OK, MessageBoxImage.Error);
            }
            

            Application.Current.Dispatcher.Invoke(new Action(() =>
            {
                MainWindow mw = (MainWindow)Application.Current.MainWindow;

                IPHostEntry ipHost = Dns.GetHostEntry(Dns.GetHostName());
                foreach (IPAddress item in ipHost.AddressList)
                {
                    if(!item.IsIPv6LinkLocal)
                        mw.appendConsole("Server IP: " + item.ToString() + ":" + SERVERPORT.ToString());    
                }
                
            }));
        }
Exemple #4
0
        public static void Main(string[] args)
        {
            //chargement de la configuration du server
            settings = new Config();

            //configuration du logging
            InitLogging();

            //configuration du serveur
            server=new NetServer();
            server.OnClientAccepted+=server_OnClientAccepted;
            server.OnClientConnected+= server_OnClientConnected;
            server.OnClientDisconnected+= server_OnClientDisconnected;
            server.OnClientRejected+= server_OnClientRejected;

            server.OnReceived += server_OnReceived;
            server.OnStarted+= server_OnStarted;
            server.OnStopped+=server_OnStopped;

            server.TickRate = 1000;

            // configuration du port
            serialPort = new SerialPort { BaudRate = settings.BaudRate,
                DataWidth = settings.DataWidth,
                Port = settings.Port,
                StopBits = settings.StopBits,
                ParityBits = settings.ParityBits,
                Priority = ThreadPriority.Highest };

            serialPort.Received += serialPort_Received;
            serialPort.Connected += serialPort_Connected;

            if (!serialPort.Open())
            {
                logger.Error("Le port est occupé");
                Console.Write("Press any key to exit . . . ");
                Console.ReadKey(true);
                return;
            }
            try
            {
                server.Start(IPAddress.Parse(settings.Server),
                             settings.ServerPort,settings.Capacity);
                if(server.IsOnline)
                {
                    running=new Thread(Run);
                    running.Start();
                    running.Join();
                }
            }
            catch(Exception e)
            {
                logger.Error(e.Message);
            }
            finally
            {
                Console.Write("Press any key to exit . . . ");
                Console.ReadKey(true);
            }
        }
Exemple #5
0
 void Start()
 {
     _dataWriter = new NetDataWriter();
     _netServer = new NetServer(this, 100, "sample_app");
     _netServer.Start(5000);
     _netServer.DiscoveryEnabled = true;
     _netServer.UpdateTime = 15;
 }
    /// <summary>
    /// Creates a server that listens on a given port.
    /// </summary>
    /// <returns>The server object.</returns>
    /// <param name="maxConnections">Max connections.</param>
    /// <param name="port">Port.</param>
    public static NetServer CreateServer( int maxConnections , int port )
    {
        NetServer s = new NetServer( maxConnections , port );

        // If we were successful in creating our server and it is unique
        if(s.mIsRunning && mServers.Contains (s) != true ){
            mServers.Add (s);
        }

        return s;
    }
    public void StartServer()
    {
        NetPeerConfiguration config = new NetPeerConfiguration("UnityFPSFramework");
        config.Port = 44644;
        config.MaximumConnections=64;

        NetServer server = new NetServer(config);
        server.Start();
        ServerStarted=true;
        Debug.Log ("Network Server Started");
    }
        private LocalServerImpl(Peer peer)
        {
            Peer = peer;
            Peer.Start();

            _writerStream = new MemoryStream();
            _readerStream = new MemoryStream();

            _clients = new Dictionary<NetConnection, Client>();
            _lastClientCheck = DateTime.Now;
        }
Exemple #9
0
        static void Test6()
        {
            var pfx = new X509Certificate2("../newlife.pfx", "newlife");

            //Console.WriteLine(pfx);

            //using var svr = new ApiServer(1234);
            //svr.Log = XTrace.Log;
            //svr.EncoderLog = XTrace.Log;

            //var ns = svr.EnsureCreate() as NetServer;

            using var ns = new NetServer(1234)
                  {
                      Name         = "Server",
                      ProtocolType = NetType.Tcp,
                      Log          = XTrace.Log,
                      SessionLog   = XTrace.Log,
                      SocketLog    = XTrace.Log,
                      LogReceive   = true
                  };

            ns.EnsureCreateServer();
            foreach (var item in ns.Servers)
            {
                if (item is TcpServer ts)
                {
                    ts.Certificate = pfx;
                }
            }

            ns.Received += (s, e) =>
            {
                XTrace.WriteLine("收到:{0}", e.Packet.ToStr());
            };
            ns.Start();

            using var client = new TcpSession
                  {
                      Name        = "Client",
                      Remote      = new NetUri("tcp://127.0.0.1:1234"),
                      SslProtocol = SslProtocols.Tls,
                      Log         = XTrace.Log,
                      LogSend     = true
                  };
            client.Open();

            client.Send("Stone");

            Console.ReadLine();
        }
 protected CommunicatorProviderBase(NetPeerConfiguration configuration, ConverterBase converter, IAuthenticator authenticator = null, string[] requiredAuthenticationRoles = null)
 {
     Configuration = configuration;
     Converter     = converter;
     if (authenticator != null)
     {
         RequiredAuthenticationRoles = requiredAuthenticationRoles;
         configuration.EnableMessageType(NetIncomingMessageType.ConnectionApproval);
     }
     NetConnector  = new NetServer(configuration);
     NetEncryptor  = new ServerTripleDesNetEncryptor(NetConnector, 4096);
     Authenticator = authenticator;
     Initialize(typeof(ICallbackContract), typeof(IProviderContract));
 }
Exemple #11
0
        public static void start()
        {
            net = new NetServer(config);

            net.RegisterReceivedCallback(new SendOrPostCallback((e) =>
            {
                message = ((NetServer)e).ReadMessage();
                messageRecieved(message);
            }), new SynchronizationContext());

            print("info", "Starting...");
            net.Start();
            print("info", "Server running");
        }
Exemple #12
0
        public static void SendToGameRoomPlayers(NetServer server, NetOutgoingMessage outmsg, GameRoom room)
        {
            var recipients = new List <NetConnection>();

            for (int i = 0; i < room.Players.Count; i++)
            {
                recipients.Add(room.Players[i].Conn);
            }
            if (recipients.Count <= 0)
            {
                return;
            }
            server.SendMessage(outmsg, recipients, NetDeliveryMethod.ReliableOrdered, 0);
        }
Exemple #13
0
        public void Init(string app_identifier, int listen_port, int max_connections, int interval_ms, bool use_multi_thread)
        {
            this.app_identifier = app_identifier;
            this.interval_ms    = interval_ms;

            NetPeerConfiguration config = new NetPeerConfiguration(this.app_identifier);

            config.MaximumConnections = max_connections;
            config.Port = listen_port;

            net_server = new NetServer(config);

            if (SynchronizationContext.Current == null)
            {
                SynchronizationContext.SetSynchronizationContext(new STASynchronizationContext());
            }

            if (use_multi_thread == false && SynchronizationContext.Current != null)
            {
                net_server.RegisterReceivedCallback(new SendOrPostCallback(GotMessage));
            }
            else
            {
                net_worker                     = new BackgroundWorker();
                net_worker.DoWork             += new DoWorkEventHandler(net_worker_DoWork);
                net_worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(net_worker_RunWorkerCompleted);
            }

            tick_timer = new Timer(e =>
            {
                try
                {
                    if (OnTick != null && use_multi_thread && SynchronizationContext.Current != null)
                    {
                        SynchronizationContext.Current.Post(x =>
                        {
                            OnTick();
                        }, null);
                    }
                    else
                    {
                        OnTick();
                    }
                }
                catch (System.Exception ex)
                {
                    Console.WriteLine("Tick timer exception = {0}", ex.Message);
                }
            });
        }
Exemple #14
0
 public IMessageHandler ProcessMessage(IMessageHandler interface37_0)
 {
     if (!NetServer.IsServerUser(interface37_0.Header.DestUserID))
     {
         this.interface40_0.SendMessage(interface37_0, interface37_0.Header.DestUserID, ActionTypeOnChannelIsBusy.Continue);
         return(null);
     }
     if (interface37_0.Header.MessageType == base.object_0.ContinueTransFile)
     {
         new ContinueTransFile().method_0();
         return(null);
     }
     return(base.method_5(interface37_0));
 }
Exemple #15
0
        private static void OnAgarServerProgerss()
        {
            NetPeerConfiguration config = new NetPeerConfiguration("CozyKxlol");

            config.MaximumConnections = 10000;
            config.Port = 48360;

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

            RegisterAgarMessage();

            FixedBallMgr.Update();
        }
Exemple #16
0
        public Lobby(string id, NetConnection nc, string owner, NetServer masterServer)
        {
            MasterServer = masterServer;

            LobbyData = new LobbyData(id, owner, new string[] { owner }, new List <ChatEntry>
            {
                new ChatEntry("Server", owner + "joined to lobby.")
            }
                                      );
            Members = new Dictionary <string, NetConnection>
            {
                { owner, nc }
            };
        }
Exemple #17
0
    /// <summary>
    /// Initializes as server.
    /// </summary>
    /// <param name="port">The server's sending port. Server's receiving port is set to port+1.</param>
    public static void InitAsServer(int port)
    {
        InitBasic(true);
        NetServer server = new NetServer();

        m_network.m_deserializer.Init(server, m_network.m_dispatcher);

        server.SetDeserializer(m_network.m_deserializer);
        server.Start(port);

        ServerManager manager = new ServerManager(server);

        m_network.m_server = manager;
    }
Exemple #18
0
        public GameServer()
        {
            server = new NetServer();
            this.server.Connected           += new EventHandler <NetSocketConnectedEventArgs>(server_Connected);
            this.server.ConnectionRequested += new EventHandler <NetSockConnectionRequestEventArgs>(server_ConnectionRequested);
            this.server.DataArrived         += new EventHandler <NetSockDataArrivalEventArgs>(server_DataArrived);
            this.server.Disconnected        += new EventHandler <NetSocketDisconnectedEventArgs>(server_Disconnected);
            this.server.StateChanged        += new EventHandler <NetSockStateChangedEventArgs>(server_StateChanged);

            netImpl       = new C2SImplement();
            PlayerManager = new PlayerManager();
            RankManager   = new RankManager();
            //    Disconnected = new EventHandler<NetSocketDisconnectedEventArgs>(local_Disconnected);
        }
        public Server(ManagerLogger managerLogger)
        {
            this.managerLogger = managerLogger;
            players            = new List <PlayerAndConnection>();
            abilities          = new List <AbilityOutline>();
            config             = new NetPeerConfiguration("networkGame")
            {
                Port = 14241
            };
            config.EnableMessageType(NetIncomingMessageType.ConnectionApproval);
            NetServer = new NetServer(config);

            random = new Random();
        }
Exemple #20
0
        /// <summary>
        /// Initiates the NetServer.
        /// </summary>
        /// <param name="port"></param>
        public NetManager(int port)
        {
            // Configure server
            NetPeerConfiguration config = new NetPeerConfiguration("smc20")
            {
                Port = port
            };

            config.EnableMessageType(NetIncomingMessageType.ConnectionApproval);

            // Start server
            NetServer = new NetServer(config);
            NetServer.Start();
        }
Exemple #21
0
        public void StartServer(int PortNumber)
        {
            NetPeerConfiguration myConfig = new NetPeerConfiguration("Client");

            myConfig.Port = PortNumber;
            myServer      = new NetServer(myConfig);
            //myConfig.EnableMessageType(NetIncomingMessageType.ConnectionApproval);
            Console.WriteLine("Intializing Server Connection...");
            SynchronizationContext myContext = new SynchronizationContext();

            SynchronizationContext.SetSynchronizationContext(myContext);
            myServer.RegisterReceivedCallback(ProcessServerRequests, SynchronizationContext.Current);
            myServer.Start();
        }
Exemple #22
0
        ///
        /// <summary>
        ///		Initializes a new instance of the <see cref="ServerForm"/> class.
        /// </summary>
        ///
        /// <param name="autoStart">Whether or not to automatically start the server.</param>
        ///
        public ServerForm(Boolean autoStart)
        {
            InitializeComponent();


            // Set up the file system.
            serverDataDirectory = Path.Combine(Environment.CurrentDirectory, "server_data");


            // Set up the RNG.
            random = new Random();


            #region Networking Setup

            // Set up the config.
            netConfig      = new NetPeerConfiguration("Everblaze");
            netConfig.Port = 1945;
            netConfig.EnableMessageType(NetIncomingMessageType.ConnectionApproval);
            netConfig.EnableMessageType(NetIncomingMessageType.DiscoveryRequest);
            netConfig.PingInterval      = 1.5F;
            netConfig.ConnectionTimeout = 8.0F;

            // Set up the server object.
            server = new NetServer(netConfig);

            ServerTimer.Interval = 17;

            #endregion


            #region Game Setup

            // Set up the server configuration.
            // This will automatically load existing server data or create new data.
            serverConfiguration = new ServerConfiguration(
                Path.Combine(serverDataDirectory, "main.cfg"),
                ref world);

            #endregion


            if (autoStart)
            {
                log("INFO", "Automatic startup command received. Starting automatically.");

                Thread.Sleep(750);
                StartMenuItem_Click(null, null);
            }
        }
Exemple #23
0
        // When pressed StartGame button, it tries to create server
        private void OnStartGameButtonPressed(object source, EventArgs args)
        {
            NetPeerConfiguration config = new NetPeerConfiguration("DefaultConfiguration");

            config.Port         = _globals.Port;
            config.EnableUPnP   = true;
            config.LocalAddress = NetUtility.Resolve("localhost");
            NetServer server = new NetServer(config);

            server.Start();
            _globals.Server        = server;
            _globals.PlayingAsHost = true;
            GD.Print("OK: Created Server");
        }
Exemple #24
0
        public UdpServer(PacketHandler packetHandler, PlayerManager playerManager, EntitySimulation entitySimulation, ServerConfig serverConfig)
        {
            this.packetHandler    = packetHandler;
            this.entitySimulation = entitySimulation;
            this.playerManager    = playerManager;

            portNumber = serverConfig.ServerPort;
            maxConn    = serverConfig.MaxConnections;

            NetPeerConfiguration config = BuildNetworkConfig();

            server = new NetServer(config);
            thread = new Thread(Listen);
        }
Exemple #25
0
        static void Test1()
        {
            var svr = new NetServer <WebSocketSession>();

            svr.ProtocolType = NetType.Tcp;
            svr.Port         = 8888;
            svr.Received    += Svr_Received;
            svr.Log          = XTrace.Log;
            svr.LogSend      = true;
            svr.LogReceive   = true;
            svr.Start();

            Console.ReadKey();
        }
        public void Start(bool isServer, int port, string url = null)
        {
            _isServer = isServer;
            _url      = url;
            _port     = port;
            _cancellationTokenSource = new CancellationTokenSource();

            OnClose += Close;

            if (_isServer)
            {
                var config = new NetPeerConfiguration("networkGame")
                {
                    Port              = _port,
                    PingInterval      = 1f,
                    ConnectionTimeout = 5f
                };
                config.EnableMessageType(NetIncomingMessageType.ConnectionApproval);
                config.EnableMessageType(NetIncomingMessageType.ConnectionLatencyUpdated);
                config.EnableMessageType(NetIncomingMessageType.WarningMessage);
                config.EnableMessageType(NetIncomingMessageType.VerboseDebugMessage);
                config.EnableMessageType(NetIncomingMessageType.ErrorMessage);
                config.EnableMessageType(NetIncomingMessageType.Error);
                config.EnableMessageType(NetIncomingMessageType.DebugMessage);
                _server = new NetServer(config);
                _server.Start();
            }
            else
            {
                var config = new NetPeerConfiguration("networkGame")
                {
                    PingInterval      = 1f,
                    ConnectionTimeout = 5f
                };
                config.EnableMessageType(NetIncomingMessageType.WarningMessage);
                config.EnableMessageType(NetIncomingMessageType.VerboseDebugMessage);
                config.EnableMessageType(NetIncomingMessageType.ErrorMessage);
                config.EnableMessageType(NetIncomingMessageType.Error);
                config.EnableMessageType(NetIncomingMessageType.DebugMessage);
                _client = new NetClient(config);
                _client.Start();
                _client.Connect(_url, _port);
            }

            _task = new Task(() =>
            {
                Run(_cancellationTokenSource.Token);
            });
            _task.Start();
        }
Exemple #27
0
        public void Start()
        {
            Console.WriteLine("Started server: " + serverName + ".");

            NetPeerConfiguration config = new NetPeerConfiguration("DATX02");

            config.Port = port;

            serverThread = new NetServer(config);
            serverThread.Start();
            running = true;

            Run();
        }
        public override void OnEnabled()
        {
            NetPeerConfiguration Configuration = new NetPeerConfiguration(ConstantValues.ServerString)
            {
                Port = (int)ConstantValues.Port
            };

            Configuration.EnableMessageType(NetIncomingMessageType.ConnectionApproval);
            Configuration.EnableMessageType(NetIncomingMessageType.StatusChanged);
            server = new NetServer(Configuration);
            server.Start();

            base.OnEnabled();
        }
        public LidgrenServer()
        {
            var config = new NetPeerConfiguration("test");

            config.Port = 12345;
            config.MaximumConnections = 10;
            config.ConnectionTimeout  = 10;
            config.EnableMessageType(NetIncomingMessageType.ConnectionApproval);

            m_Server = new NetServer(config);
            m_Server.Configuration.ConnectionTimeout = 10;

            m_MessageTypes = new Dictionary <Type, Action <IConnection, object> >();
        }
Exemple #30
0
        public NetServer StartServer()
        {
            var config = new NetPeerConfiguration("tests")
            {
                Port = 27015,
                MaximumConnections = 1024
            };

            var server = new NetServer(config);

            server.Start();

            return(server);
        }
Exemple #31
0
        private void InitServer()
        {
            string nameServer = GameConst.serverName;
            int    port       = GameConst.port;

            config = new NetPeerConfiguration(nameServer)
            {
                Port = port
            };
            config.MaximumConnections = 2048;
            server = new NetServer(config);
            server.Start();
            Console.WriteLine("MaxConnections=" + config.MaximumConnections);
        }
Exemple #32
0
        public static void Start()
        {
            if (Settings.Instance.Server.EnableWebSocketServer)
            {
                WebSocketListener.Start();
            }

            pingTimer = new Timer(PingTimerCallback, null, 7500, 10000);
            HighResolutionTimer.LoopTimer.Elapsed += HubLoop;

            HighResolutionTimer.LoopTimer.AfterElapsed += (sender, e) =>
            {
                if (ListenerServer != null)
                {
                    ListenerServer.FlushSendQueue();
                }
            };
            HighResolutionTimer.VoIPTimer.AfterElapsed += (sender, e) =>
            {
                if (ListenerServer != null)
                {
                    ListenerServer.FlushSendQueue();
                }
            };

            _lastTick = DateTime.Now;

            NetPeerConfiguration Config = new NetPeerConfiguration("BeatSaberMultiplayer")
            {
                Port               = Settings.Instance.Server.Port,
                EnableUPnP         = Settings.Instance.Server.TryUPnP,
                AutoFlushSendQueue = false,
                MaximumConnections = 512
            };

            Config.EnableMessageType(NetIncomingMessageType.ConnectionApproval);

            ListenerServer = new NetServer(Config);
            ListenerServer.Start();

            if (Settings.Instance.Radio.EnableRadio)
            {
                RadioController.StartRadio();
            }

            if (Settings.Instance.Server.TryUPnP)
            {
                ListenerServer.UPnP.ForwardPort(Config.Port, "Beat Saber Multiplayer ServerHub");
            }
        }
        public void SetupLidgrenServer()
        {
            if (PortIsInUse(ServerContext.Config.Port))
            {
                throw new HandledException($"Port {ServerContext.Config.Port} is already in use");
            }

            ServerContext.Config.EnableMessageType(NetIncomingMessageType.ConnectionApproval);
            ServerContext.Config.EnableMessageType(NetIncomingMessageType.NatIntroductionSuccess);

            Server = new NetServer(ServerContext.Config);
            Server.Start();
            ServerContext.ServerStarting = false;
        }
Exemple #34
0
        public static void Initialize()
        {
            var config = new NetPeerConfiguration("LidgrenChat")
            {
                Port = 5555
            };

            NetServer = new NetServer(config);

            NetServer.Start();

            StartThread();
            Started = true;
        }
    public void CreateServer()
    {
        NetManager.Init();

        NetServer s = NetManager.CreateServer(30, 7777);

        Assert.IsNotNull(s);
        Assert.IsTrue(NetUtils.IsSocketValid(s.mSocket));
        Assert.IsTrue(s.mIsRunning);
        Assert.AreEqual(7777, s.mPort);

        NetworkTransport.RemoveHost(s.mSocket);
        NetManager.Shutdown();
    }
Exemple #36
0
        /**
         * Will start the server with the given port and game settings.
         */
        private void StartServer(int port, GameSettings gameSettings)
        {
            Logger.Get().Info(this, $"Starting server v{Version.String}");

            var packetManager = new PacketManager();

            var netServer = new NetServer(packetManager);

            var serverManager = new ServerManager(netServer, gameSettings, packetManager);

            new CommandManager(gameSettings, serverManager);

            serverManager.Start(port);
        }
        public Server()
        {
            players = new List <Player>();
            var config = new NetPeerConfiguration("networkGame")
            {
                Port = 4207
            };

            config.EnableMessageType(NetIncomingMessageType.ConnectionApproval);
            config.EnableMessageType(NetIncomingMessageType.Data);

            server = new NetServer(config);
            server.Start();
        }
        public void CheckForMessageAvailable()
        {
            NetIncomingMessage message;
            NetServer          server = ServerNetworkSceneComponent.GetNetServer();

            if ((message = server.ReadMessage()) != null)
            {
                if (message.MessageType == NetIncomingMessageType.ConnectionApproval)
                {
                    message.SenderConnection.Approve();
                }
                CheckForMessage(message);
            }
        }
Exemple #39
0
    public Server(int port)
    {
        config = new NetPeerConfiguration("cars");
        config.Port = port;
        config.MaximumConnections = MaxNumConnectedClients;
        config.ConnectionTimeout = 15.0f;

        Players = new RemotePlayerSet();
        Players.SetNumSlots(MaxSlots);
        Players.OnPlayerSetSlot += OnPlayerSetSlot;
        Players.OnPlayerAdded += OnPlayerAdded;
        Players.OnPlayerStatusChanged += OnPlayerStatusChanged;

        server = new NetServer(config);
    }
    public NetworkServer()
        : base(SEND_RATE)
    {
        instance = this;
        is_server = true;
        is_client = false;

        host_id = 0;
        host_id_counter = 0;
        actor_id_counter = 0;

        var config = CreateConfig();
        config.Port = NetworkPeer.APP_PORT;

        net_peer = netServer = new NetServer(config);
        netServer.Start();
    }
    void Start()
    {
        GameObject.DontDestroyOnLoad(this);
        GameObject.DontDestroyOnLoad(gameObject);

        NetPeerConfiguration config = new NetPeerConfiguration("LidgrenDemo");
        config.Port = port;

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

        SetPeer(server);

        Connected += onConnected;
        Disconnected += onDisconnected;

        RegisterMessageHandler(LidgrenMessageHeaders.RequestSpawn, onRequestSpawn);
        RegisterMessageHandler(LidgrenMessageHeaders.Movement, onMovement);
        RegisterMessageHandler(LidgrenMessageHeaders.Position, onPosition);
    }
Exemple #42
0
        /// <summary>
        /// This will create a server socket on a random port, used to initiate a connection
        /// we send address of this server to the remote server to connect using a client socket
        /// The only exception is gateway socket that has no peerId (is null)
        /// </summary>
        /// <param name="_parentId"></param>
        /// <param name="_peerId"></param>
        public PeerSocket(ResponseHandlersCollection handlers, string _parentId, string _peerId)
        {
            responseHandlers = handlers;

            parentId = _parentId;
            peerId = _peerId;

            string myName = "";

            if (peerId == null)
            {
                myName = _parentId + ".Gateway";
            }
            else
            {
                myName = parentId + "." + peerId + ".Server";
            }

            serverSocket = new NetServer(myName);
            serverSocket.OnReceived += new NetClientReceivedEventHandler<byte[]>(onServerReceiveData);
            serverSocket.Start(IPAddress.Parse(defaultHost), random.Next(1025, 65500));
        }
Exemple #43
0
        public void Dispose()
        {
            //if client is sending some data, wait for finish
            if (clientSocket != null)
            {
                clientSocket.Disconnect();
                clientSocket = null;
            }

            if (serverSocket != null)
            {
                serverSocket.DisconnectAll();
                serverSocket.Stop();
                serverSocket = null;
            }
        }
    static void Main(string[] args)
    {
        int loopStartTime = 0;
        int loopEndTime = 0;
        float deltaSecond = 0;

        //Frequency to return data
        const float ReturnDataPerSecond = 20;
        float lastSentData = 0;

        //Team containers
        ShapeTeamContainer greenTeam = new ShapeTeamContainer(ShapeTeam.GREEN);
        ShapeTeamContainer redTeam = new ShapeTeamContainer(ShapeTeam.RED);

        NetPeerConfiguration config = new NetPeerConfiguration("ShapeSpace");
        config.Port = 55678;
        config.MaximumConnections = maxPlayers;
        config.ConnectionTimeout = 10;
        config.EnableMessageType(NetIncomingMessageType.DiscoveryRequest);
        config.EnableMessageType(NetIncomingMessageType.ConnectionApproval);

        server = new NetServer(config);
        //Console.WriteLine(server.Configuration.LocalAddress);

        physicsWorld = new World(Vector2.Zero);
        //50px = 1m
        ConvertUnits.SetDisplayUnitToSimUnitRatio(50f);

        try
        {
            server.Start();
        }
        catch(Exception e)
        {
            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine(e);
            Console.ForegroundColor = ConsoleColor.White;
            WaitForKeyPress();
        }

        Console.WriteLine("Server Started Sucessfully!");

        //Main program loop
        while(true)
        {
            deltaSecond = (loopEndTime - loopStartTime) / 1000f;

            lastSentData += deltaSecond;

            loopStartTime = Environment.TickCount;

            //Handle incoming messages
            NetIncomingMessage msg;
            while ((msg = server.ReadMessage()) != null)
            {
                //Console.WriteLine(msg.MessageType);
                switch (msg.MessageType)
                {
                    case NetIncomingMessageType.Data:
                        //A swith handling ShapeSpace custom message types
                        switch((ShapeCustomNetMessageType)msg.ReadByte())
                        {
                            case ShapeCustomNetMessageType.InputUpdate:
                                int playerIndex = msg.ReadInt32();
                                float timeSinceLast = msg.ReadFloat();
                                Vector2 input = msg.ReadVector2();

                                connectedPlayers[playerIndex].inputs.Add(new InputWithTime(timeSinceLast,input));

                                //Console.WriteLine(timeSinceLast + ": " + input.ToString());
                                break;
                            case ShapeCustomNetMessageType.SetupRequest:
                                NetOutgoingMessage returnMessage = server.CreateMessage();

                                NetworkPlayer newPlayer = new NetworkPlayer(physicsWorld, msg.SenderConnection, new Vector2(0,0));

                                //ShapeTeam team = (ShapeTeam)msg.ReadByte();
                                string username = msg.ReadString();

                                try
                                {
                                    //newPlayer.SetTeam(team);
                                    newPlayer.SetUserName(username);

                                    int spot = AddNewPlayer(newPlayer);

                                    newPlayer.indexOnServer = spot;

                                    //Assign the new player to the team with the least amount of players
                                    ShapeTeamContainer newPlayerTeam = greenTeam.GetNumberOfMembers() < redTeam.GetNumberOfMembers() ? greenTeam : redTeam;
                                    bool isBank = newPlayerTeam.AddPlayer(newPlayer.indexOnServer);
                                    newPlayer.SetTeam(newPlayerTeam.GetTeam());
                                    newPlayer.body.Position = ConvertUnits.ToSimUnits(newPlayerTeam.basePosition);

                                    if (isBank)
                                        newPlayer.SetClass(new ShapeClassBank());
                                    else
                                        newPlayer.SetClass(new ShapeClassKnocker());

                                    newPlayer.OnCreateRemnant += CreateRemnant;
                                }
                                catch(Exception e)
                                {
                                    returnMessage.Write((byte)ShapeCustomNetMessageType.SetupFailed);
                                    returnMessage.Write(e.Message);
                                    server.SendMessage(returnMessage, newPlayer.netConnection, NetDeliveryMethod.ReliableUnordered);
                                    break;
                                }

                                returnMessage.Write((byte)ShapeCustomNetMessageType.SetupSuccessful);
                                returnMessage.Write(newPlayer.indexOnServer);
                                returnMessage.Write((byte)newPlayer.team);

                                returnMessage.Write(connectedPlayersActual);

                                for (int i = 0; i < connectedPlayers.Length; i++)
                                {
                                    if(connectedPlayers[i] != null)
                                    {
                                        returnMessage.Write(connectedPlayers[i].indexOnServer);
                                        returnMessage.Write((byte)connectedPlayers[i].team);
                                        returnMessage.Write(connectedPlayers[i].power);
                                    }
                                }

                                server.SendMessage(returnMessage, newPlayer.netConnection, NetDeliveryMethod.ReliableUnordered);

                                if(connectedPlayersActual > 1)
                                {
                                    NetOutgoingMessage newPlayerMessage = server.CreateMessage();
                                    newPlayerMessage.Write((byte)ShapeCustomNetMessageType.NewPlayerJoined);

                                    newPlayerMessage.Write(newPlayer.indexOnServer);
                                    newPlayerMessage.Write((byte)newPlayer.team);
                                    newPlayerMessage.Write(/*newPlayer.power*/5);

                                    server.SendMessage(newPlayerMessage, GetRecipients(newPlayer.indexOnServer), NetDeliveryMethod.ReliableUnordered, 0);
                                }

                                Console.WriteLine("Player connected");
                                break;
                        }
                        break;
                    case NetIncomingMessageType.DiscoveryRequest:
                        NetOutgoingMessage response = server.CreateMessage();
                        response.Write("This is a Shape Space server");
                        server.SendDiscoveryResponse(response, msg.SenderEndPoint);
                        break;
                    case NetIncomingMessageType.ConnectionApproval:
                        Console.WriteLine("A client is asking to connect");
                        //Approve the connection and send back a hailmessage containing server info back
                        NetOutgoingMessage hailMessage = server.CreateMessage();
                        hailMessage.Write(maxPlayers);

                        msg.SenderConnection.Approve(hailMessage);
                        break;
                    case NetIncomingMessageType.StatusChanged:
                        if(msg.ReadByte() == (byte)NetConnectionStatus.Disconnected)
                        {
                            //Console.WriteLine("Player disconnected: " + FindPlayerByNetConnection(msg.SenderConnection).Username);

                            RemovePlayer(msg.SenderConnection);
                        }
                        break;
                    default:
                        Console.WriteLine("Unhandled type: " + msg.MessageType + " Info: \"" + msg.ReadString() + "\"");
                        break;
                }
                server.Recycle(msg);
            }

            //Move players
            UpdatePlayers(deltaSecond);

            //Simulate the world
            physicsWorld.Step(1f/100f);

            //Return data to clients
            if (lastSentData >= 1f/ReturnDataPerSecond && connectedPlayersActual > 0)
            {
                //List<NetConnection> recipients = new List<NetConnection>();

                NetOutgoingMessage outMess = server.CreateMessage();
                outMess.Write((byte)ShapeCustomNetMessageType.LocationUpdate);
                outMess.Write(connectedPlayersActual);

                for (int i = 0; i < maxPlayers; i++)
                {
                    if (connectedPlayers[i] != null)
                    {
                        outMess.Write(connectedPlayers[i].indexOnServer);
                        outMess.Write(connectedPlayers[i].power);
                        outMess.Write(lastSentData);
                        outMess.Write(ConvertUnits.ToDisplayUnits(connectedPlayers[i].body.Position));

                        int trailCount = connectedPlayers[i].trail.Count;
                        outMess.Write(trailCount);

                        for(int j = 0; j < trailCount; j++)
                        {
                            //outMess.Write(connectedPlayers[i].trail[j].Id);
                            outMess.Write(connectedPlayers[i].trail[j].position);
                            outMess.Write(connectedPlayers[i].trail[j].size);
                        }
                    }
                }

                //Write all remnants positions
                int remnantCount = remnants.Count;
                outMess.Write(remnantCount);

                for (int j = 0; j < remnantCount; j++)
                {
                    outMess.Write(remnants[j].position);
                    outMess.Write(remnants[j].size);
                }

                server.SendMessage(outMess, GetRecipients(-1), NetDeliveryMethod.UnreliableSequenced, 2);

                lastSentData = 0;
            }

            //Make sure the server runs at about 60 frames per second
            if(deltaSecond * 1000 < 1000/17)
                Thread.Sleep(Convert.ToInt32(1000/17 - deltaSecond * 1000));

            loopEndTime = Environment.TickCount;
        }
    }
    /// <summary>
    /// Runs network test to determine interface functionality status. Currently has bug where running twice crashes.
    /// </summary>
    /// <returns>The local test.</returns>
    /// <param name="args">Arguments.</param>
    public string FullLocalTest( params string[] args )
    {
        int port = Random.Range( 100 , 99999 );
        int maxUsers = Random.Range( 2 , 100 );
        string ip = "127.0.0.1";

        Debug.Log ("FullLocalTest() START : Port( " + port.ToString () + " ) MaxUsers( " + maxUsers.ToString() + ")");

        mServer = NetManager.CreateServer( maxUsers , port );

        mServer.OnMessage = OnServerMessage;

        if(mServer == null){ Debug.Log ("FullLocalTest() ERROR : Server instance not created!" ); return ""; }
        if(!NetUtils.IsSocketValid( mServer.mSocket )){ Debug.Log ("FullLocalTest() ERROR : Server socket invalid!" ); return ""; }
        if(!mServer.mIsRunning){ Debug.Log ("FullLocalTest() ERROR : Server is not running after create server called!" ); return ""; }

        Debug.Log ("FullLocalTest() : Server started successfully!");

        mClient = NetManager.CreateClient ();

        if(mClient == null){ Debug.Log ("FullLocalTest() ERROR : Client instance not created!" ); return ""; }
        if(!NetUtils.IsSocketValid ( mClient.mSocket ) ){ Debug.Log ("FullLocalTest() ERROR : Client socket invalid!"); return ""; }

        mClient.OnMessage = OnClientMessage;

        Debug.Log ("FullLocalTest() : Client started successfully!");

        if(! mClient.Connect ( ip , port ) ){ Debug.Log ("FullLocalTest() ERROR : Client connect failed!"); return ""; }

        // Now we go to our On*Message delegates to do the rest of the testing
        return "";
    }
    /// <summary>
    /// Destroys the server.
    /// </summary>
    /// <returns><c>true</c>, if server was destroyed, <c>false</c> otherwise.</returns>
    /// <param name="s">NetServer to destroy</param>
    public static bool DestroyServer( NetServer s )
    {
        if( mServers.Contains (s) == false){
            Debug.Log ("NetManager::DestroyServer( " + s.mSocket.ToString() + ") - Server does not exist!");
            return false;
        }

        NetworkTransport.RemoveHost( s.mSocket );

        mServers.Remove( s );

        return true;
    }
Exemple #47
0
    private static Task StartServer()
    {
        NetPeerConfiguration config = new NetPeerConfiguration("Kludge");
        config.MaximumConnections = 100;
        config.Port = 14343;
        config.AutoFlushSendQueue = true;
        NetPeer peer = new NetServer(config);
        network = new NetworkManager(peer);

        network.Connected += OnConnected;
        network.Disconnected += OnDisconnected;
        network.OtherStatus += OnOtherStatus;

        handler = new MessageHandler(network);
        handler.RecommendationRequested += RecommendationRequested;
        handler.RecommendationSelected += RecommendationSelected;
        handler.ObjectsFreed += ObjectsFreed;
        handler.Sentiments += SentimentsSent;

        Task serverTask = new Task(() => RunServer(network));
        serverTask.Start();
        return serverTask;
    }
    /// <summary>
    /// Console command for starting a server.
    /// </summary>
    public string ConsoleServerStart( params string[] args )
    {
        if( args.Length < 3 ){
            return "Invalid Number of Arguments : server.start <maxconnections> <port>";
        }

        mServer = NetManager.CreateServer( int.Parse ( args[1] ) , int.Parse( args[2] ) );

        if(mServer != null){
            mServer.OnMessage = OnServerMessage;
            return "Server is running!";
        } else {
            return "Server failed to start!";
        }
    }