예제 #1
0
 public void Stop()
 {
     server_status = serverStatus.STOP;
     //     task_Loop_ThreadOpen.Dispose();
     //    task_Loop_ThreadOpen.Wait();
     server.Stop();
 }
예제 #2
0
        //Callback to get the status of the machines running
        static void statusCallback(IAsyncResult result)
        {
            serverStatus del = (serverStatus)((AsyncResult)result).AsyncDelegate;

            string state = del.EndInvoke(result);

            //print the state of the server
            Console.WriteLine(state);
        }
예제 #3
0
        void Status()
        {
            //iterate trough all servers
            foreach (KeyValuePair <string, string> ServerProcess in Servers)
            {
                //get the server remote object
                ITSpaceServer server = (ITSpaceServer)Activator.GetObject(typeof(ITSpaceServer), ServerProcess.Value);

                serverStatus RemoteDel = new serverStatus(server.Status);

                //initialize the callback to get the result of the asyn call
                AsyncCallback callback = new AsyncCallback(PuppetMasterService.statusCallback);

                //make the async call
                IAsyncResult RemAr = RemoteDel.BeginInvoke(callback, null);
            }
        }
예제 #4
0
        public async void startListen()
        {
            listener.Start();
            status = serverStatus.LISTENING;
            System.Console.WriteLine("Loading server commands...");
            ServerCommands.LoadCmdDict();
            System.Console.WriteLine("Server started at {0}", port);
            while (true)
            {
                var client = await listener.AcceptTcpClientAsync();

                clientInfo info = new clientInfo(client);
                System.Console.WriteLine("New user {0} connected.",
                                         info.UserName);
                System.Console.WriteLine("Key: {0}", Convert.ToBase64String(info.Key));
                clientList.Add(info);
                this.clientEvent(info);
            }
        }
예제 #5
0
    public void Start(int port)
    {
        server = null;
        try
        {
            // Определим нужное максимальное количество потоков
            // Пусть будет по 4 на каждый процессор
            int MaxThreadsCount = Environment.ProcessorCount * 4;
            Console.WriteLine("Максимальное кол-во потоков: " + MaxThreadsCount.ToString());
            // Установим максимальное количество рабочих потоков
            ThreadPool.SetMaxThreads(MaxThreadsCount, MaxThreadsCount);
            // Установим минимальное количество рабочих потоков
            ThreadPool.SetMinThreads(2, 2);


            // Устанавливаем порт для TcpListener = 9595.

            //IPAddress localAddr = IPAddress.Parse("127.0.0.1");

            server = new TcpListener(IPAddress.Any, port);

            // Запускаем TcpListener и начинаем слушать клиентов.
            server.Start();
            server_status = serverStatus.START;
            // Принимаем клиентов в бесконечном цикле.
            Task task_Loop_ThreadOpen = new Task(Loop_ThreadOpenner);
            task_Loop_ThreadOpen.Start();
        }
        catch (SocketException e)
        {
            //В случае ошибки, выводим что это за ошибка.
            Console.WriteLine("SocketException: {0}", e);
            // Останавливаем TcpListener.
            Stop();
        }
    }
예제 #6
0
 //IPAddress localAddr=IPAddress.Parse("0.0.0.0");
 public chatServer()
 {
     status   = serverStatus.UN_INITIALIZED;
     listener = new TcpListener(IPAddress.Any, 4321);
 }