Example #1
0
        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);
                }
            }
        }
Example #2
0
        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();
        }