private void ListenForClients() { this.tcpListener.Start(); while (true) { lock (this) { //blocks until a client has connected to the server TcpClient client = this.tcpListener.AcceptTcpClient(); extended y = new extended(); //Packe alle ins struct und dann in eine Liste zu späteren vewendung y.IP = client.Client.RemoteEndPoint.ToString(); y.tcp = client; clientList.Add(y); //create a thread to handle communication //with connected client Thread clientThread = new Thread(new ParameterizedThreadStart(HandleClientComm)); clientThread.Start(client); } } }
private void HandleClientComm(object client) { TcpClient tcpClient = (TcpClient)client; NetworkStream clientStream = tcpClient.GetStream(); byte[] message = new byte[4096]; int bytesRead; while (true) { bytesRead = 0; try { //blocks until a client sends a message bytesRead = clientStream.Read(message, 0, 4096); } catch { //a socket error has occured break; } if (bytesRead == 0) { //the client has disconnected from the server break; } //message has successfully been received ASCIIEncoding encoder = new ASCIIEncoding(); extended y = new extended(); y = ((extended)clientList[clientList.Count - 1]); y.Name = encoder.GetString(message, 0, bytesRead); clientList.RemoveAt(clientList.Count - 1); clientList.Add(y); //Console.WriteLine("Client: " + encoder.GetString(message, 0, bytesRead)); } tcpClient.Close(); }