using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; using System.Net.Sockets; namespace Server { public class ClientHandler { private TcpClient client; private string name; //Het server object waarbij deze verbinding hoort private Server server; //Constructor public ClientHandler(Server server, TcpClient client, string name) { this.server = server; this.client = client; this.name = name; } //De kern van de serverkant van een verbinding. Wacht op een bericht en stop deze in de inbox van de server public void run() { Console.WriteLine("ClientHandler " + name + " started"); byte[] bytesFrom = new byte[10025]; //grootte overgenomen van voorbeeld string dataFromClient; //Deze loop wordt elke keer uitgevoerd als er een bericht binnenkomt while (true) { //vraag verbinding op NetworkStream stream = client.GetStream(); //lees data in, dit wacht dus tot er een bericht is. stream.Read(bytesFrom, 0, (int)client.ReceiveBufferSize); //maak er een string van dataFromClient = System.Text.Encoding.ASCII.GetString(bytesFrom); //haal de restdata aan het einde weg dataFromClient = dataFromClient.Substring(0, dataFromClient.IndexOf('\n')); //"bezorg" het bericht in de inbox van de server, zet de client naam erbij als "afzender" server.receiveMessage(this.Name, dataFromClient); } } //De naam van de client waarmee je verbonden bent public string Name { get { return name; } } //Stuur een bericht naar de client waarmee je verbonden bent public void sendMessage(string message) { byte[] outStream = System.Text.Encoding.ASCII.GetBytes(message + '\n'); NetworkStream stream = client.GetStream(); stream.Write(outStream, 0, outStream.Length); stream.Flush(); } } }