get udp example working

This commit is contained in:
Travis Shears 2026-04-12 21:56:05 +02:00
parent d2621e2aec
commit 4420b4e061
Signed by: travisshears
GPG key ID: CB9BF1910F3F7469
3 changed files with 56 additions and 5 deletions

View file

@ -9,8 +9,5 @@
<AssemblyName>Backend</AssemblyName>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="ENet-CSharp" Version="2.4.8" />
</ItemGroup>
</Project>

14
backend/Dockerfile Normal file
View file

@ -0,0 +1,14 @@
FROM mcr.microsoft.com/dotnet/sdk:10.0 AS build
WORKDIR /build
COPY Backend.csproj .
RUN dotnet restore
COPY . .
RUN dotnet build -c Release
FROM mcr.microsoft.com/dotnet/runtime:10.0
WORKDIR /app
COPY --from=build /build/bin/Release/net10.0 .
ENV ENET_HOST=0.0.0.0
ENV ENET_PORT=7777
EXPOSE 7777/udp
ENTRYPOINT ["./Backend"]

View file

@ -1,12 +1,52 @@
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace Love2DBackend
{
class Program
{
static void Main(string[] args)
static async Task Main(string[] args)
{
Console.WriteLine("Hello from LÖVE2D Backend!");
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.");
}
}
}
}
}