public TCPClient() { TcpClient client = new TcpClient("127.0.0.1", 7575); NetworkStream networkStream = client.GetStream(); bool done = false; Console.WriteLine("Type your name: "); string clientUserName = Console.ReadLine(); CSUtil.SendMessage(networkStream, ("N^^M" + clientUserName)); string nameOk = CSUtil.ReadMessage(networkStream); Console.WriteLine("Name status: " + nameOk); //Console.WriteLine("Type 'bye' to end connection"); while (!done) { Console.Write("Enter a message to send to server: "); string message = Console.ReadLine(); if (networkStream.DataAvailable) { string messageR = CSUtil.ReadMessage(networkStream); Console.WriteLine("message: " + messageR); done = messageR.Equals("BYE"); } //else //{ // string messageAnswer = Console.ReadLine(); // CSUtil.SendMessage(networkStream, (messageAnswer)); //} } }
static async Task HandleClientThread(object obj) { TcpClient client = obj as TcpClient; NetworkStream networkStream = client.GetStream(); CTcpClient cTcpClient = new CTcpClient(client); bool done = false; try { while (!done) //&& client.Connected { //Console.Out.WriteLine("while"); if (networkStream.DataAvailable) { Console.Out.WriteLine("data available"); Byte[] byteA = CSUtil.ReadObject(networkStream); Console.Out.WriteLine($"Object type = '{byteA.GetType()}'"); if (byteA.GetType().ToString().Equals("System.Byte[]")) { Object objUnknown = CSUtil.ByteArrayToObject(byteA); Console.Out.WriteLine($"Object3 type = '{objUnknown.GetType()}'"); //Checks which object it is if (objUnknown.GetType().ToString().Equals("DP.DatumPrakker")) { DatumPrakker datumPrakker = (DatumPrakker)CSUtil.ByteArrayToObject(byteA); datumPrakkers.Add(datumPrakker); FileIO.WriteDPs(); Console.Out.WriteLine($"DatumPrakker: {datumPrakker}"); } else if (objUnknown.GetType().ToString().Equals("DP.DatumPrakker+DPAnswer")) { DatumPrakker.DPAnswer dpAnswer = (DatumPrakker.DPAnswer)CSUtil.ByteArrayToObject(byteA); foreach (DatumPrakker p in datumPrakkers) { if (p.id.Equals(dpAnswer.dpID)) { p.answers.Add(dpAnswer); FileIO.WriteDPs(); } } Console.Out.WriteLine($"DPAnswer: {dpAnswer}"); } else if (objUnknown.GetType().ToString().Equals("System.String")) { String s = (String)CSUtil.ByteArrayToObject(byteA); Console.Out.WriteLine($"String: {s}"); if (s.StartsWith("bye")) { networkStream = null; client.Close(); Console.WriteLine($"client.Connected: {client.Connected}"); Console.WriteLine($"client '{cTcpClient.userName}' Disconnected"); done = true; break; } else if (s.StartsWith("N^^M")) { cTcpClient.userName = s.Remove(0, 4); Console.WriteLine($"Accepted {cTcpClient.userName}"); //CSUtil.SendMessage(networkStream, "OK Name"); networkStream.Flush(); } else if (s.StartsWith("GETDP")) { String dpID = s.Remove(0, 5); bool found = false; Console.Out.WriteLine($"getDP {dpID}"); foreach (DatumPrakker dp in datumPrakkers) { if (dp.id.Equals(dpID)) { found = true; CSUtil.SendObject(networkStream, dp); Console.Out.WriteLine($"DP '{dpID}' sended to {cTcpClient.userName}"); } } if (!found) { CSUtil.SendObject(networkStream, "DPGET-NOTFOUND"); } } else { Console.Out.WriteLine(s); } } else { Console.Out.WriteLine($"UnknownObject is Unknown: '{objUnknown.GetType()}'"); } } } } } catch (IOException e) { if (!client.Connected) { Console.WriteLine($"client.Connected: {client.Connected}"); Console.WriteLine($"client '{cTcpClient.userName}' Disconnected"); client.Close(); } else { Console.WriteLine(e); } //throw; } }