YapperDesktop/YapperServer/Client.cs
2025-02-24 20:07:27 +01:00

61 lines
1.9 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;
using YapperServer.Net.IO;
namespace YapperServer
{
internal class Client
{
public string UserName { get; set; }
public Guid UID { get; set; }
public TcpClient ClientSocket { get; set; }
PacketReader _packetReader { get; set; }
public Client(TcpClient client) {
ClientSocket = client;
UID = Guid.NewGuid();
_packetReader = new PacketReader(ClientSocket.GetStream());
var opcode = _packetReader.ReadByte();
UserName = _packetReader.ReadMessage();
Console.WriteLine($"[{DateTime.Now}]: A kliens csatlakozott a következő username-el: {UserName}");
Task.Run(() => Process());
}
void Process()
{
while (true)
{
try
{
var opcode = _packetReader.ReadByte();
switch (opcode)
{
case 5:
var msg = _packetReader.ReadMessage();
Console.WriteLine($"[{DateTime.Now}]: Az üzenet megérkezett! {msg}");
Program.BroadCastMessage($"[{DateTime.Now}]: {msg}");
break;
default:
break;
}
}
catch (Exception ex)
{
Console.WriteLine($"{UID} lecsatlakozott.");
Console.WriteLine($"[{DateTime.Now}]: Hiba történt a kliens feldolgozása közben: {ex.Message}");
Program.DisconnectMessage(UID.ToString());
ClientSocket.Close();
break;
}
}
}
}
}