75 lines
1.3 KiB
C#
75 lines
1.3 KiB
C#
|
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();
|