mirror of
https://git.battle-of-pip.de/root/vpr-mitarbeiterverwaltung.git
synced 2025-06-20 15:53:16 +02:00
71 lines
1.7 KiB
C#
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);
|
|
} |