get udp example working
This commit is contained in:
parent
d2621e2aec
commit
4420b4e061
3 changed files with 56 additions and 5 deletions
|
|
@ -9,8 +9,5 @@
|
||||||
<AssemblyName>Backend</AssemblyName>
|
<AssemblyName>Backend</AssemblyName>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<PackageReference Include="ENet-CSharp" Version="2.4.8" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
||||||
14
backend/Dockerfile
Normal file
14
backend/Dockerfile
Normal 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"]
|
||||||
|
|
@ -1,12 +1,52 @@
|
||||||
using System;
|
using System;
|
||||||
|
using System.Net;
|
||||||
|
using System.Net.Sockets;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace Love2DBackend
|
namespace Love2DBackend
|
||||||
{
|
{
|
||||||
class Program
|
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.");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue