コード例 #1
0
        public void DoAcceptTcpClientCallback(IAsyncResult ar)
        {
            TcpListener listener     = (TcpListener)ar.AsyncState;
            TcpClient   clientSocket = listener.EndAcceptTcpClient(ar);
            var         client       = new ClientHandler();

            client.startClient(clientSocket, clients.Count, clients, labelOnlineClients, labelOfflineClients, listViewMachinesAndTasksHandler, executedTasksHandlers, labelAllClients, console, this);
            clients.Add(client);
            Application.Current.Dispatcher.Invoke(() =>
            {
                labelOnlineClients.Content  = "Online: " + clients.Count;
                labelOfflineClients.Content = "Offline: " + (clientsAll - clients.Count);
            });
            listener.BeginAcceptTcpClient(new AsyncCallback(DoAcceptTcpClientCallback), listener);
        }
コード例 #2
0
        public void Listen()
        {
            serverSocket = new TcpListener(IPAddress.Any, 65452);
            clientSocket = default(TcpClient);
            clients      = new List <ClientHandler>();
            listViewMachinesAndTasksHandler.clients = clients;
            Application.Current.Dispatcher.Invoke(() =>
            {
                labelOnlineClients.Content  = "Online: " + clients.Count;
                labelOfflineClients.Content = "Offline: " + (clientsAll - clients.Count);
            });

            try
            {
                serverSocket.Start();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
                throw;
            }

            while (true)
            {
                try
                {
                    clientSocket = serverSocket.AcceptTcpClient();
                    var client = new ClientHandler();
                    client.startClient(clientSocket, clients.Count, listBox1, clients, labelOnlineClients, labelOfflineClients, listViewMachinesAndTasksHandler, executedTasksHandlers, labelAllClients);
                    clients.Add(client);
                    Application.Current.Dispatcher.Invoke(() =>
                    {
                        labelOnlineClients.Content  = "Online: " + clients.Count;
                        labelOfflineClients.Content = "Offline: " + (clientsAll - clients.Count);
                    });
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.ToString());
                    throw;
                }
            }
        }