SnapixLP | Tim G. c214be937c Initial Commit
2025-05-19 09:16:34 +02:00

71 lines
1.7 KiB
C#

using System.Net.Sockets;
using DX86.Modules;
namespace DX86;
using System.Net.Sockets;
public abstract class UdpServer
{
private string address;
private int port;
protected MessageSender ms;
private DX86 dx86;
public UdpServer(string address, int port, MessageSender ms)
{
ms.Log("[DX86] Setting up server.");
this.address = address;
this.port = port;
this.ms = ms;
this.dx86 = new DX86(ms, ServerType.UDP);
ms.Log("[DX86] Server Setup Complete.");
_ = RunServer();
}
private async Task RunServer()
{
ms.Log("[DX86] Starting server.");
// Subscribe to events
dx86.ClientConnected += ClientConnectEvent;
dx86.MessageReceived += MessageReceivedEvent;
dx86.ClientDisconnected += ClientDisconnectEvent;
// Start the server
dx86.StartServer(address, port);
ms.Log("[DX86] Server started.");
// Keep the server running indefinitely
await Task.Delay(Timeout.Infinite);
}
public void StopServer()
{
ms.Log("[DX86] Got Signal to Stop Server.");
dx86.StopServer();
ms.Log("[DX86] Server stopped.");
}
public string GetAddress()
{
return address;
}
public int GetPort()
{
return port;
}
public void SendMessageAsync(TcpClient client, string message)
{
dx86.SendMessageAsync(client, message);
}
// Define your event handlers
protected abstract void ClientConnectEvent(TcpClient client);
protected abstract void MessageReceivedEvent(TcpClient client, string message);
protected abstract void ClientDisconnectEvent(TcpClient client);
}