示例#1
0
 public ServerWorker(Socket client, HandleWorker removeWorker)
 {
     this.client       = client;
     this.removeWorker = removeWorker;
     isRun             = true;
     path = createStorePlace();
 }
 public ServerListener(Server server, HandleWorker addWorker, HandleWorker removeWorker)
 {
     this.server       = server;
     isRun             = true;
     this.addWorker    = addWorker;
     this.removeWorker = removeWorker;
 }
 public DataForm(ServerWorker worker, HandleWorker endWorking)
 {
     InitializeComponent();
     this.worker         = worker;
     this.endWorking     = endWorking;
     this.labelName.Text = worker.client.RemoteEndPoint.ToString();
     pos = 0;
 }
        public Server(int port, HandleWorker addWorker, HandleWorker removeWorker)
        {
            workers = new List <ServerWorker>();
            socket  = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            IPEndPoint iPEndPoint = new IPEndPoint(IPAddress.Any, port);

            socket.Bind(iPEndPoint);
            listener = new ServerListener(this, addWorker, removeWorker);
            new Thread(listener.Run).Start();
        }
 public void AddToListClient(ServerWorker worker)
 {
     workers[worker] = false;
     if (listClient.InvokeRequired)
     {
         HandleWorker a = new HandleWorker(AddToListClient);
         Invoke(a, new object[] { worker });
     }
     else
     {
         ListViewItem listViewItem = new ListViewItem(worker.client.RemoteEndPoint.ToString());
         listViewItem.SubItems.Add(worker.client.Connected.ToString());
         this.listClient.Items.Add(listViewItem);
     }
 }
 public void RemoveFromListClient(ServerWorker worker)
 {
     if (listClient.InvokeRequired)
     {
         HandleWorker a = new HandleWorker(RemoveFromListClient);
         Invoke(a, new object[] { worker });
     }
     else
     {
         string ep = worker.client.RemoteEndPoint.ToString();
         foreach (ListViewItem listViewItem in listClient.Items)
         {
             if (listViewItem.Text.Equals(ep))
             {
                 listClient.Items.Remove(listViewItem);
                 break;
             }
         }
         listClient.Refresh();
     }
 }