Пример #1
0
 public HardwareTcpServer(int port)
 {
    this.tcpPort = port;
    State = TcpServerState.Offline;
    Messages = new Queue<TcpMessage>();
    clients = new List<Thread>();
    sockets = new List<Socket>();
    worker = new BackgroundWorker();
    worker.DoWork += new DoWorkEventHandler(worker_DoWork);
    worker.WorkerSupportsCancellation = true;
 }
Пример #2
0
 static void server_OnServerState(TcpServerState state)
 {
     Console.WriteLine("TCP -> " + state);
 }
Пример #3
0
 public int AcceptTcpClient(Socket socket)
 {
     socket.SendTimeout = 100;
     int clientId = sockets.Count;
     sockets.Add(socket);
     var client = new Thread(ClientThreadFunction);
     client.Start(clientId);
     clients.Add(client);
     State = TcpServerState.Connected;
     if (OnServerState != null)
     {
         OnServerState(State);
     } 
     if (OnClientState != null)
     {
         OnClientState(clientId + 1, "connected");
     }
     return clientId;
 }
Пример #4
0
 void worker_DoWork(object sender, DoWorkEventArgs e)
 {
     var worker = (BackgroundWorker) sender;
     System.Net.Sockets.TcpListener listener = new TcpListener((int)e.Argument);
     listener.Start();
     State = TcpServerState.Listening;
     if (OnServerState != null)
     {
         OnServerState(State);
     }
     while (!worker.CancellationPending)
     {
         while (!listener.Pending())
         {
             Thread.Sleep(300);
             if (worker.CancellationPending)
             {
                 listener.Stop();
                 State = TcpServerState.Free;
                 if (OnServerState != null)
                 {
                     OnServerState(State);
                 }
                 return;
             }
         }
         AcceptTcpClient(listener.AcceptSocket());
     }
     State = TcpServerState.Offline;
     if (OnServerState != null)
     {
         OnServerState(State);
     } 
     listener.Stop();
 }
Пример #5
0
 private void TcpServerOnServerState(TcpServerState state)
 {
     try
     {
         Invoke(new Action<TcpServerState>(TcpServerChangeState), state);
     }
     catch (Exception e)
     {
     }
 }
Пример #6
0
 protected void TcpServerChangeState(TcpServerState state)
 {
     if (state == TcpServerState.Connected)
     {
         lblTcpState.ForeColor = Color.Green;
     }
     if (state == TcpServerState.Listening || state == TcpServerState.Free)
     {
         lblTcpState.ForeColor = Color.Orange;
     }
     if (state == TcpServerState.Offline)
     {
         lblTcpState.ForeColor = Color.DarkRed;
     }
     lblTcpState.Text = state.ToString() + " " + Program.TcpServer.Port;
 }