using System.Net; using System.Net.Sockets; const ushort port = 4444; using var tcp = new TcpClient(); var hasQuit = false; var serverListening = new Thread(() => { var stream = new BinaryReader(tcp.GetStream()); while (true) { const int checkDelayMilliseconds = 100; try { Console.WriteLine(stream.ReadString()); } catch (EndOfStreamException) { Console.WriteLine("Server closed the connection"); break; } Thread.Sleep(checkDelayMilliseconds); } }); Console.Write("Enter a name: "); var name = Console.ReadLine() ?? "user"; Console.Write("Enter a Chattle server address: "); var ipAddress = IPAddress.Parse(Console.ReadLine() ?? "127.0.0.1"); tcp.Connect(ipAddress, port); serverListening.Start(); Console.WriteLine($"Connected to {ipAddress}..."); var writer = new BinaryWriter(tcp.GetStream()); writer.Write(name); while (!hasQuit) { const int checkDelayMilliseconds = 100; var input = Console.ReadLine(); if (input == null || input.Length == 0) { continue; } if (input.StartsWith('/')) { switch (input.Trim()[1 ..]) { case "quit": hasQuit = true; break; default: Console.WriteLine($"Unknown command `{input}.`"); break; } } else { writer.Write(input); } Thread.Sleep(checkDelayMilliseconds); } tcp.Close(); serverListening.Join();