From 553be6732429455519daeb09e8ec4a68e2b93d59 Mon Sep 17 00:00:00 2001 From: Hugo LIVET Date: Thu, 16 Mar 2023 10:49:03 +0100 Subject: [PATCH 1/9] Localhost to server --- code/server/ClientConsole/Program.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/server/ClientConsole/Program.cs b/code/server/ClientConsole/Program.cs index dc744ca..48401b8 100644 --- a/code/server/ClientConsole/Program.cs +++ b/code/server/ClientConsole/Program.cs @@ -13,7 +13,7 @@ class Program static void StartClient() { - IPEndPoint serverEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 3131); + IPEndPoint serverEndPoint = new IPEndPoint(Dns.GetHostAddresses("hulivet.fr").FirstOrDefault(), 3131); UdpClient client = new UdpClient(); // Send connection message to server @@ -31,7 +31,7 @@ class Program string message = ""; while (message != "exit") { - serverEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), int.Parse(receivedPort)); + serverEndPoint = new IPEndPoint(Dns.GetHostAddresses("hulivet.fr").FirstOrDefault(), int.Parse(receivedPort)); Console.Write("Enter message to send (or 'exit' to quit): "); message = Console.ReadLine(); From 95fbe12aad025be6e7507f66de7bf31a4772dba0 Mon Sep 17 00:00:00 2001 From: Bruno Da Costa Cunha Date: Thu, 16 Mar 2023 11:50:39 +0100 Subject: [PATCH 2/9] =?UTF-8?q?Shared=20cr=C3=A9e=20et=20serveur=20=C3=A0?= =?UTF-8?q?=20jour,=20pas=20encore=20test=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- code/server/Server.sln | 6 ++++++ code/server/Server/Program.cs | 9 +++++++-- code/server/Server/Room.cs | 15 +++++++++++++++ code/server/Server/Server.csproj | 5 +++++ code/server/Shared/DTO/Action.cs | 15 +++++++++++++++ code/server/Shared/DTO/Informations.cs | 13 +++++++++++++ code/server/Shared/DTO/ObjectTransfert.cs | 14 ++++++++++++++ code/server/Shared/Shared.csproj | 9 +++++++++ 8 files changed, 84 insertions(+), 2 deletions(-) create mode 100644 code/server/Server/Room.cs create mode 100644 code/server/Shared/DTO/Action.cs create mode 100644 code/server/Shared/DTO/Informations.cs create mode 100644 code/server/Shared/DTO/ObjectTransfert.cs create mode 100644 code/server/Shared/Shared.csproj diff --git a/code/server/Server.sln b/code/server/Server.sln index d97c22f..17bf734 100644 --- a/code/server/Server.sln +++ b/code/server/Server.sln @@ -17,6 +17,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{12A97D16-3 EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ClientConsole", "ClientConsole\ClientConsole.csproj", "{33F7C629-F92B-459C-BCC5-6A4601D6D9EA}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Shared", "Shared\Shared.csproj", "{CA1465F2-A006-4AF6-8231-59DB00963BD0}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -47,6 +49,10 @@ Global {33F7C629-F92B-459C-BCC5-6A4601D6D9EA}.Debug|Any CPU.Build.0 = Debug|Any CPU {33F7C629-F92B-459C-BCC5-6A4601D6D9EA}.Release|Any CPU.ActiveCfg = Release|Any CPU {33F7C629-F92B-459C-BCC5-6A4601D6D9EA}.Release|Any CPU.Build.0 = Release|Any CPU + {CA1465F2-A006-4AF6-8231-59DB00963BD0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CA1465F2-A006-4AF6-8231-59DB00963BD0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CA1465F2-A006-4AF6-8231-59DB00963BD0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CA1465F2-A006-4AF6-8231-59DB00963BD0}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/code/server/Server/Program.cs b/code/server/Server/Program.cs index ccd8ca2..91fe13e 100644 --- a/code/server/Server/Program.cs +++ b/code/server/Server/Program.cs @@ -4,6 +4,9 @@ using System.Net; using System.Net.Sockets; using System.Text; using System.Threading; +using DataBase.Entity; +using Shared.DTO; +using System.Text.Json; class Program { @@ -26,9 +29,11 @@ class Program { IPEndPoint remoteEndPoint = new IPEndPoint(IPAddress.Any, 0); byte[] receivedData = serverSocket.Receive(ref remoteEndPoint); - string message = Encoding.ASCII.GetString(receivedData); + string fileJson = Encoding.UTF8.GetString(receivedData); + ObjectTransfert data = JsonSerializer.Deserialize>(fileJson); - if (message == "Connect") + + if (data.Informations.Action == Shared.DTO.Action.Connect) { Console.WriteLine("New connection from " + remoteEndPoint.ToString()); diff --git a/code/server/Server/Room.cs b/code/server/Server/Room.cs new file mode 100644 index 0000000..b5b2a60 --- /dev/null +++ b/code/server/Server/Room.cs @@ -0,0 +1,15 @@ +using DataBase.Entity; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Server +{ + public class Room + { + public ICollection MaxPlayers { get; set; } + public int Port { get; set; } + } +} diff --git a/code/server/Server/Server.csproj b/code/server/Server/Server.csproj index 40c60dd..059c005 100644 --- a/code/server/Server/Server.csproj +++ b/code/server/Server/Server.csproj @@ -7,4 +7,9 @@ enable + + + + + diff --git a/code/server/Shared/DTO/Action.cs b/code/server/Shared/DTO/Action.cs new file mode 100644 index 0000000..6e208e9 --- /dev/null +++ b/code/server/Shared/DTO/Action.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Shared.DTO +{ + public enum Action + { + Start, + Connect, + End + } +} diff --git a/code/server/Shared/DTO/Informations.cs b/code/server/Shared/DTO/Informations.cs new file mode 100644 index 0000000..1b44596 --- /dev/null +++ b/code/server/Shared/DTO/Informations.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Shared.DTO +{ + public class Informations + { + public Action Action { get; set; } + } +} diff --git a/code/server/Shared/DTO/ObjectTransfert.cs b/code/server/Shared/DTO/ObjectTransfert.cs new file mode 100644 index 0000000..5acfca2 --- /dev/null +++ b/code/server/Shared/DTO/ObjectTransfert.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Shared.DTO +{ + public class ObjectTransfert + { + public Informations Informations { get; set; } + public T Data { get; set; } + } +} diff --git a/code/server/Shared/Shared.csproj b/code/server/Shared/Shared.csproj new file mode 100644 index 0000000..132c02c --- /dev/null +++ b/code/server/Shared/Shared.csproj @@ -0,0 +1,9 @@ + + + + net6.0 + enable + enable + + + From 997a626a7c40e4a0d3137660cc23ddf0b404d4ae Mon Sep 17 00:00:00 2001 From: Bruno Da Costa Cunha Date: Fri, 17 Mar 2023 10:32:44 +0100 Subject: [PATCH 3/9] :hammer: Ajout condition des qu'il y a 2 players le jeu va demarrer. --- code/server/Server/Program.cs | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/code/server/Server/Program.cs b/code/server/Server/Program.cs index 91fe13e..27fce29 100644 --- a/code/server/Server/Program.cs +++ b/code/server/Server/Program.cs @@ -7,9 +7,11 @@ using System.Threading; using DataBase.Entity; using Shared.DTO; using System.Text.Json; +using Server; class Program { + //sert juste à stocker les connexions pour l'instant static Dictionary clients = new Dictionary(); static int nextPort = 3132; @@ -21,6 +23,7 @@ class Program static void StartServer() { + Room room = new Room(); IPEndPoint serverEndPoint = new IPEndPoint(IPAddress.Any, 3131); UdpClient serverSocket = new UdpClient(serverEndPoint); Console.WriteLine("Server started, waiting for clients to connect..."); @@ -31,6 +34,8 @@ class Program byte[] receivedData = serverSocket.Receive(ref remoteEndPoint); string fileJson = Encoding.UTF8.GetString(receivedData); ObjectTransfert data = JsonSerializer.Deserialize>(fileJson); + room.MaxPlayers.Add(data.Data); + if (data.Informations.Action == Shared.DTO.Action.Connect) @@ -38,7 +43,7 @@ class Program Console.WriteLine("New connection from " + remoteEndPoint.ToString()); // Assign a unique port to the client - IPEndPoint clientEndPoint = new IPEndPoint(IPAddress.Any, nextPort++); ; + IPEndPoint clientEndPoint = new IPEndPoint(IPAddress.Any, nextPort++); UdpClient clientSocket = new UdpClient(clientEndPoint); clients[remoteEndPoint] = clientSocket; @@ -50,7 +55,13 @@ class Program // Start thread to receive data from client Thread receiveThread = new Thread(()=>ReceiveMessages(clientSocket)); receiveThread.Start(); - + + if (room.MaxPlayers.Count == 2) + { + Console.WriteLine("Starting game..."); + // Call a function to start the game + } + } } } From 7c6d340c1af7d3654b821cf4c8e30e2a5d4fd711 Mon Sep 17 00:00:00 2001 From: Bruno Da Costa Cunha Date: Fri, 17 Mar 2023 11:17:24 +0100 Subject: [PATCH 4/9] :hammer: modification server --- code/server/Server/PongServer.cs | 105 +++++++++++++++++++++++++++++++ code/server/Server/Program.cs | 60 +----------------- code/server/Server/Room.cs | 13 +++- 3 files changed, 119 insertions(+), 59 deletions(-) create mode 100644 code/server/Server/PongServer.cs diff --git a/code/server/Server/PongServer.cs b/code/server/Server/PongServer.cs new file mode 100644 index 0000000..740d9ec --- /dev/null +++ b/code/server/Server/PongServer.cs @@ -0,0 +1,105 @@ +using System; +using System.Collections.Generic; +using System.Net; +using System.Net.Sockets; +using System.Text; +using System.Threading; +using DataBase.Entity; +using Shared.DTO; +using System.Text.Json; +using Server; + +public class PongServer +{ + //sert juste à stocker les connexions pour l'instant + static Dictionary clients = new Dictionary(); + Dictionary rooms = new Dictionary(); + + int nextPort; + int listenPort; + + public PongServer(int port = 3131) + { + nextPort = port + 1; + listenPort = port; + } + + public void StartServer() + { + + IPEndPoint serverEndPoint = new IPEndPoint(IPAddress.Any, listenPort); + UdpClient serverSocket = new UdpClient(serverEndPoint); + Console.WriteLine("Server started, waiting for clients to connect..."); + + while (true) + { + IPEndPoint remoteEndPoint = new IPEndPoint(IPAddress.Any, 0); + byte[] receivedData = serverSocket.Receive(ref remoteEndPoint); + string fileJson = Encoding.UTF8.GetString(receivedData); + ObjectTransfert data = JsonSerializer.Deserialize>(fileJson); + + if (data.Informations.Action == Shared.DTO.Action.Create) + { + Room room = new Room(data.Data.playerID); + room.playerHost = data.Data; + room.nbPlayer++; + Console.WriteLine("New connection from " + remoteEndPoint.ToString()); + + // Assign a unique port to the client + IPEndPoint clientEndPoint = new IPEndPoint(IPAddress.Any, nextPort); + room.Port = nextPort; + nextPort++; + UdpClient clientSocket = new UdpClient(clientEndPoint); + clients[remoteEndPoint] = clientSocket; + + // Send connection message to client + string connectionMessage = room.ID; + byte[] connectionData = Encoding.ASCII.GetBytes(connectionMessage); + serverSocket.Send(connectionData, connectionData.Length, remoteEndPoint); + + // Start thread to receive data from client + Thread receiveThread = new Thread(() => ReceiveMessages(clientSocket)); + receiveThread.Start(); + + } + + if (data.Informations.Action == Shared.DTO.Action.Join) + { + Console.WriteLine("New connection from " + remoteEndPoint.ToString()); + + // Assign a unique port to the client + IPEndPoint clientEndPoint = new IPEndPoint(IPAddress.Any, nextPort++); + UdpClient clientSocket = new UdpClient(clientEndPoint); + clients[remoteEndPoint] = clientSocket; + + // Send connection message to client + string connectionMessage = clientEndPoint.Port.ToString(); + byte[] connectionData = Encoding.ASCII.GetBytes(connectionMessage); + serverSocket.Send(connectionData, connectionData.Length, remoteEndPoint); + + // Start thread to receive data from client + Thread receiveThread = new Thread(() => ReceiveMessages(clientSocket)); + receiveThread.Start(); + + } + + if (room.MaxPlayers.Count == 2) + { + Console.WriteLine("Starting game..."); + // Call a function to start the game + } + } + } + + static void ReceiveMessages(UdpClient clientSocket) + { + IPEndPoint remoteEndPoint = new IPEndPoint(IPAddress.Any, 0); + + while (true) + { + byte[] receivedData = clientSocket.Receive(ref remoteEndPoint); + string receivedMessage = Encoding.ASCII.GetString(receivedData); + Console.WriteLine("Received from " + remoteEndPoint.ToString() + ": " + receivedMessage); + } + } +} \ No newline at end of file diff --git a/code/server/Server/Program.cs b/code/server/Server/Program.cs index 27fce29..f71a7d4 100644 --- a/code/server/Server/Program.cs +++ b/code/server/Server/Program.cs @@ -17,65 +17,9 @@ class Program static void Main(string[] args) { + PongServer server = new PongServer(); Console.WriteLine("Welcome to LeapHit Multiplayer - Server"); - StartServer(); + server.StartServer(); } - static void StartServer() - { - Room room = new Room(); - IPEndPoint serverEndPoint = new IPEndPoint(IPAddress.Any, 3131); - UdpClient serverSocket = new UdpClient(serverEndPoint); - Console.WriteLine("Server started, waiting for clients to connect..."); - - while (true) - { - IPEndPoint remoteEndPoint = new IPEndPoint(IPAddress.Any, 0); - byte[] receivedData = serverSocket.Receive(ref remoteEndPoint); - string fileJson = Encoding.UTF8.GetString(receivedData); - ObjectTransfert data = JsonSerializer.Deserialize>(fileJson); - room.MaxPlayers.Add(data.Data); - - - - if (data.Informations.Action == Shared.DTO.Action.Connect) - { - Console.WriteLine("New connection from " + remoteEndPoint.ToString()); - - // Assign a unique port to the client - IPEndPoint clientEndPoint = new IPEndPoint(IPAddress.Any, nextPort++); - UdpClient clientSocket = new UdpClient(clientEndPoint); - clients[remoteEndPoint] = clientSocket; - - // Send connection message to client - string connectionMessage = clientEndPoint.Port.ToString(); - byte[] connectionData = Encoding.ASCII.GetBytes(connectionMessage); - serverSocket.Send(connectionData, connectionData.Length, remoteEndPoint); - - // Start thread to receive data from client - Thread receiveThread = new Thread(()=>ReceiveMessages(clientSocket)); - receiveThread.Start(); - - if (room.MaxPlayers.Count == 2) - { - Console.WriteLine("Starting game..."); - // Call a function to start the game - } - - } - } - } - - static void ReceiveMessages(UdpClient clientSocket) - { - IPEndPoint remoteEndPoint = new IPEndPoint(IPAddress.Any, 0); - - while (true) - { - byte[] receivedData = clientSocket.Receive(ref remoteEndPoint); - string receivedMessage = Encoding.ASCII.GetString(receivedData); - Console.WriteLine("Received from " + remoteEndPoint.ToString() + ": " + receivedMessage); - - } - } } \ No newline at end of file diff --git a/code/server/Server/Room.cs b/code/server/Server/Room.cs index b5b2a60..20f6832 100644 --- a/code/server/Server/Room.cs +++ b/code/server/Server/Room.cs @@ -9,7 +9,18 @@ namespace Server { public class Room { - public ICollection MaxPlayers { get; set; } + + public Room(int id) + { + ID = id; + } + + public int ID { get; set; } + + public Player playerHost; + public Player playerJoin; + + public int nbPlayer = 0; public int Port { get; set; } } } From a10bc95c558e0bb3a1f4b753d83e72ef0b885add Mon Sep 17 00:00:00 2001 From: Bruno Da Costa Cunha Date: Fri, 17 Mar 2023 11:23:55 +0100 Subject: [PATCH 5/9] Testing --- code/server/Server/Program.cs | 4 ---- 1 file changed, 4 deletions(-) diff --git a/code/server/Server/Program.cs b/code/server/Server/Program.cs index f71a7d4..69a37c3 100644 --- a/code/server/Server/Program.cs +++ b/code/server/Server/Program.cs @@ -11,10 +11,6 @@ using Server; class Program { - //sert juste à stocker les connexions pour l'instant - static Dictionary clients = new Dictionary(); - static int nextPort = 3132; - static void Main(string[] args) { PongServer server = new PongServer(); From 796b1e08da2085553b0463f48ba4d11c124ab733 Mon Sep 17 00:00:00 2001 From: Bruno Da Costa Cunha Date: Fri, 17 Mar 2023 11:28:47 +0100 Subject: [PATCH 6/9] testing --- code/server/Server/Server.csproj | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/code/server/Server/Server.csproj b/code/server/Server/Server.csproj index 059c005..82d9bf8 100644 --- a/code/server/Server/Server.csproj +++ b/code/server/Server/Server.csproj @@ -1,15 +1,15 @@ - - Exe - net6.0 - enable - enable - + + Exe + net6.0 + enable + enable + - - - - + + + + - + \ No newline at end of file From 56a8c35eb3734315849a70b84cdd126919049c3f Mon Sep 17 00:00:00 2001 From: Noan07 <84435602+Noan07@users.noreply.github.com> Date: Sat, 18 Mar 2023 07:29:22 +0100 Subject: [PATCH 7/9] :hammer: modif Program.cs de l'Api --- code/server/ApiLeapHit/Program.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/server/ApiLeapHit/Program.cs b/code/server/ApiLeapHit/Program.cs index 8df64de..958f98a 100644 --- a/code/server/ApiLeapHit/Program.cs +++ b/code/server/ApiLeapHit/Program.cs @@ -8,7 +8,7 @@ builder.Services.AddControllers(); // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(); -builder.Services.AddScoped(); +builder.Services.AddSingleton(); //builder.Services.AddSingleton(); // Add logging From 20777fe25de9b8458bc968b978d28abbae06769b Mon Sep 17 00:00:00 2001 From: Noan07 <84435602+Noan07@users.noreply.github.com> Date: Sat, 18 Mar 2023 07:41:48 +0100 Subject: [PATCH 8/9] =?UTF-8?q?:hammer:=20Modif=20DockerFile=20/=20essai?= =?UTF-8?q?=20pour=20r=C3=A9soudre=20le=20probl=C3=A8me=20d'instance=20dan?= =?UTF-8?q?s=20le=20conteneur?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- code/server/Dockerfile | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/code/server/Dockerfile b/code/server/Dockerfile index ab1f7af..b354efd 100644 --- a/code/server/Dockerfile +++ b/code/server/Dockerfile @@ -1,6 +1,4 @@ -#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging. - -FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base +FROM mcr.microsoft.com/dotnet/aspnet:6.0-buster-slim AS base WORKDIR /app EXPOSE 80 EXPOSE 443 @@ -14,6 +12,7 @@ RUN dotnet restore "ApiLeapHit/ApiLeapHit.csproj" COPY . . WORKDIR "/src/ApiLeapHit" RUN dotnet build "ApiLeapHit.csproj" -c Release -o /app/build +RUN rm -rf /root/.nuget/packages/* FROM build AS publish RUN dotnet publish "ApiLeapHit.csproj" -c Release -o /app/publish From 52ef2a91ded4396300c534d6548ef3dd3017d3a3 Mon Sep 17 00:00:00 2001 From: Noan RANDON Date: Sat, 18 Mar 2023 07:43:52 +0100 Subject: [PATCH 9/9] :hammer: modif dockerFile --- code/server/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/server/Dockerfile b/code/server/Dockerfile index b354efd..1d936f4 100644 --- a/code/server/Dockerfile +++ b/code/server/Dockerfile @@ -1,4 +1,4 @@ -FROM mcr.microsoft.com/dotnet/aspnet:6.0-buster-slim AS base +FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base WORKDIR /app EXPOSE 80 EXPOSE 443