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

68 lines
1.9 KiB
C#

using System.Net.Sockets;
using System.Net;
using YapperServer;
using YapperServer.Net.IO;
class Program
{
static TcpListener _listener;
static List<Client> _users;
static void Main(string[] args)
{
_users = new List<Client>();
_listener = new TcpListener(IPAddress.Parse("127.0.0.1"), 7891);
_listener.Start();
while (true)
{
var client = new Client(_listener.AcceptTcpClient());
_users.Add(client);
/* Broadcast the connection to everyone on the server */
BroadCastConnection();
}
}
static void BroadCastConnection()
{
foreach (var user in _users)
{
foreach (var usr in _users)
{
var broadcastPacket = new PacketBuilder();
broadcastPacket.WriteOpCode(1);
broadcastPacket.WriteString(usr.UserName);
broadcastPacket.WriteString(usr.UID.ToString());
user.ClientSocket.Client.Send(broadcastPacket.GetPacketBytes());
}
}
}
public static void BroadCastMessage(string message)
{
foreach (var user in _users)
{
var msgPacket = new PacketBuilder();
msgPacket.WriteOpCode(5);
msgPacket.WriteString(message);
user.ClientSocket.Client.Send(msgPacket.GetPacketBytes());
}
}
public static void DisconnectMessage(string uid) {
var disconnectedUser = _users.Where(x => x.UID.ToString() == uid).FirstOrDefault();
_users.Remove(disconnectedUser);
foreach (var user in _users)
{
var broadcastPacket = new PacketBuilder();
broadcastPacket.WriteOpCode(10);
broadcastPacket.WriteString(uid);
user.ClientSocket.Client.Send(broadcastPacket.GetPacketBytes());
}
BroadCastMessage($"{disconnectedUser.UserName} lecsatlakozott.");
}
}