52 lines
1.6 KiB
C#
52 lines
1.6 KiB
C#
using System;
|
|
using System.Net;
|
|
using System.Net.Sockets;
|
|
using System.Text;
|
|
using System.Threading;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace Love2DBackend
|
|
{
|
|
class Program
|
|
{
|
|
static async Task Main(string[] args)
|
|
{
|
|
Console.WriteLine("LÖVE2D Backend - UDP Server");
|
|
Console.WriteLine("Starting server on port 7777...");
|
|
|
|
using (var udpServer = new UdpClient(7777))
|
|
{
|
|
Console.WriteLine("Server listening on 0.0.0.0:7777");
|
|
|
|
var cts = new CancellationTokenSource();
|
|
|
|
// Handle Ctrl+C gracefully
|
|
Console.CancelKeyPress += (s, e) =>
|
|
{
|
|
e.Cancel = true;
|
|
cts.Cancel();
|
|
};
|
|
|
|
try
|
|
{
|
|
while (!cts.Token.IsCancellationRequested)
|
|
{
|
|
var result = await udpServer.ReceiveAsync(cts.Token);
|
|
var message = Encoding.UTF8.GetString(result.Buffer);
|
|
var clientEndpoint = result.RemoteEndPoint;
|
|
|
|
Console.WriteLine($"[{clientEndpoint}] {message}");
|
|
|
|
// Echo back
|
|
var response = Encoding.UTF8.GetBytes($"Echo: {message}");
|
|
await udpServer.SendAsync(response, response.Length, clientEndpoint);
|
|
}
|
|
}
|
|
catch (OperationCanceledException)
|
|
{
|
|
Console.WriteLine("Server stopped.");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|