From 9ed29c5f2106bb37aa8f868907b51a3ca8ec8a54 Mon Sep 17 00:00:00 2001 From: rakhedair Date: Thu, 30 Mar 2023 12:05:26 +0200 Subject: [PATCH 1/5] first push --- code/server/Server/PongServer.cs | 30 ++++++++++++++++++++++-------- code/server/Server/Room.cs | 22 +++++++++++++++------- 2 files changed, 37 insertions(+), 15 deletions(-) diff --git a/code/server/Server/PongServer.cs b/code/server/Server/PongServer.cs index bd9fa6a..b6cc080 100644 --- a/code/server/Server/PongServer.cs +++ b/code/server/Server/PongServer.cs @@ -62,17 +62,16 @@ public class PongServer Console.WriteLine("Connection " + choisenRoom.Key); if (choisenRoom.Value != default ) { - Thread join = new Thread(() => Join(data, remoteEndPoint, serverSocket, choisenRoom.Value)); - join.Start(); + Join(data, remoteEndPoint, serverSocket, choisenRoom.Value); } else { - Thread host = new Thread(() => Host(data, remoteEndPoint, serverSocket, true)); - host.Start(); + Host(data, remoteEndPoint, serverSocket, true); } } + Console.WriteLine(""); } @@ -80,11 +79,22 @@ public class PongServer private void Host(ObjectTransfert data, IPEndPoint remoteEndPoint, UdpClient serverSocket, bool availaible) { + var choisenRoom = rooms.FirstOrDefault(room => room.Value.Free); + var chosenPort = nextPort; + if (choisenRoom.Value != default) + { + chosenPort= choisenRoom.Value.Port; + choisenRoom.Value.playerHost.Value.Close(); + choisenRoom.Value.playerJoin.Value.Close(); + rooms.Remove(choisenRoom.Key); + choisenRoom = default; + } + Room room = new Room(data.Data.playerId, availaible); // Assign a unique port to the client - IPEndPoint clientEndPoint = new IPEndPoint(IPAddress.Any, nextPort); + IPEndPoint clientEndPoint = new IPEndPoint(IPAddress.Any, chosenPort); UdpClient clientSocket = new UdpClient(clientEndPoint); room.playerHost = new KeyValuePair(data.Data,clientSocket); @@ -95,8 +105,12 @@ public class PongServer Console.WriteLine("New connection Host From " + remoteEndPoint.ToString()); - room.Port = nextPort; - nextPort++; + room.Port = chosenPort; + if(chosenPort==nextPort) + { + nextPort++; + } + Tuple dataToSend = new Tuple(room.Port, true); @@ -107,7 +121,7 @@ public class PongServer serverSocket.Send(connectionData, connectionData.Length, remoteEndPoint); rooms[data.Data.playerId] = room; - room.PropertyChanged += room.OnReadyChanged; + Console.WriteLine("FIN HOST..............."); diff --git a/code/server/Server/Room.cs b/code/server/Server/Room.cs index 76a33b6..197614a 100644 --- a/code/server/Server/Room.cs +++ b/code/server/Server/Room.cs @@ -24,6 +24,8 @@ namespace Server Tuple ScoreImp = new(0, 0); public bool Availaible { get; set; } + public bool Free { get; set; }=false; + public event PropertyChangedEventHandler? PropertyChanged; public string Id { get; set; } @@ -86,8 +88,14 @@ namespace Server clientSocket2.Send(receivedData, receivedData.Length, endpoint2); semaphore.Release(); } - Availaible = true; - + Free = true; + + /* playerHost = default; + playerJoin = default; + gameRunning = true; + ScoreImp = new(0, 0);*/ + + Console.WriteLine("Game Finished Am i host " + isHost); } @@ -102,10 +110,10 @@ namespace Server gameRunning = false; } - public void OnReadyChanged(object sender, PropertyChangedEventArgs e) + async public void OnReadyChanged(object sender, PropertyChangedEventArgs e) { - /*Thread principal = new Thread(() => - {*/ + await Task.Run(() => + { Room room = sender as Room; int maxPlayer = room.nbPlayer; @@ -141,8 +149,8 @@ namespace Server receiveThread2.Join(); } - /*}); - principal.Start();*/ + }); + } -- 2.36.3 From 547a298c21901422f78c97e27c2691c40fc50181 Mon Sep 17 00:00:00 2001 From: rakhedair Date: Sun, 2 Apr 2023 18:33:50 +0200 Subject: [PATCH 2/5] quel que changement --- code/server/Server/PongServer.cs | 2 - code/server/Server/Room.cs | 70 ++++++++++++++++++++++---------- 2 files changed, 48 insertions(+), 24 deletions(-) diff --git a/code/server/Server/PongServer.cs b/code/server/Server/PongServer.cs index b6cc080..01e5fd8 100644 --- a/code/server/Server/PongServer.cs +++ b/code/server/Server/PongServer.cs @@ -84,8 +84,6 @@ public class PongServer if (choisenRoom.Value != default) { chosenPort= choisenRoom.Value.Port; - choisenRoom.Value.playerHost.Value.Close(); - choisenRoom.Value.playerJoin.Value.Close(); rooms.Remove(choisenRoom.Key); choisenRoom = default; } diff --git a/code/server/Server/Room.cs b/code/server/Server/Room.cs index 197614a..823c412 100644 --- a/code/server/Server/Room.cs +++ b/code/server/Server/Room.cs @@ -22,6 +22,9 @@ namespace Server Availaible = availaible; } Tuple ScoreImp = new(0, 0); + + ObjectTransfert>> data ; + public bool Availaible { get; set; } public bool Free { get; set; }=false; @@ -66,36 +69,59 @@ namespace Server IPEndPoint remoteEndPoint = new IPEndPoint(IPAddress.Any, 0); Thread secondsCount = new Thread(() => CountSeconds() ); - + bool isDisconected=false; secondsCount.Start(); while ((ScoreImp.Item1<6 && ScoreImp.Item2 < 6) && gameRunning) { - byte[] receivedData = clientSocket1.Receive(ref remoteEndPoint); - if (isHost) { - string fileJson = Encoding.UTF8.GetString(receivedData); - try - { - ObjectTransfert>> data = JsonSerializer.Deserialize>>>(fileJson); - ScoreImp = data.Data.Item2 != null ? data.Data.Item2 : ScoreImp; - } - catch (Exception ex) { } + try + { + byte[] receivedData = clientSocket1.Receive(ref remoteEndPoint); + if (isHost) { + string fileJson = Encoding.UTF8.GetString(receivedData); + try + { + data = JsonSerializer.Deserialize>>>(fileJson); + ScoreImp = data.Data.Item2 != null ? data.Data.Item2 : ScoreImp; + } + catch (Exception ex) { } - } - - semaphore.WaitOne(); + } + //semaphore.WaitOne(); - clientSocket2.Send(receivedData, receivedData.Length, endpoint2); - semaphore.Release(); + clientSocket2.Send(receivedData, receivedData.Length, endpoint2); + //semaphore.Release(); + + } catch (SocketException){ + isDisconected = true; + break; + } + } + //Tuple> game = new Tuple>(new GameEntities(new Tuple(0,0),0), ScoreImp); + /* ObjectTransfert>> data2 = new ObjectTransfert>>() { + Informations = new Informations(Shared.DTO.Action.End, 0, typeof(Tuple>).ToString()), + Data = game + };*/ + if (!isDisconected) + { + data.Informations.Action = Shared.DTO.Action.End; + string sendFinish = JsonSerializer.Serialize(data); + byte[] sendFinishByt = Encoding.ASCII.GetBytes(sendFinish); + try + { + clientSocket2.Send(sendFinishByt, sendFinishByt.Length, endpoint2); + } + catch (Exception ex) { } + } + if (isHost) + { + playerJoin.Value.Close(); + } + else + { + playerHost.Value.Close(); } Free = true; - - /* playerHost = default; - playerJoin = default; - gameRunning = true; - ScoreImp = new(0, 0);*/ - - Console.WriteLine("Game Finished Am i host " + isHost); } -- 2.36.3 From b9a6abeff8b3a1b7ab8daa3300679c1f544185eb Mon Sep 17 00:00:00 2001 From: Rami KHEDAIR Date: Sun, 2 Apr 2023 21:44:42 +0200 Subject: [PATCH 3/5] Update 'code/server/Server/Room.cs' --- code/server/Server/Room.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/server/Server/Room.cs b/code/server/Server/Room.cs index 823c412..182ef55 100644 --- a/code/server/Server/Room.cs +++ b/code/server/Server/Room.cs @@ -87,12 +87,12 @@ namespace Server catch (Exception ex) { } } - //semaphore.WaitOne(); - + semaphore.WaitOne(); clientSocket2.Send(receivedData, receivedData.Length, endpoint2); - //semaphore.Release(); + semaphore.Release(); } catch (SocketException){ + semaphore.Release(); isDisconected = true; break; } -- 2.36.3 From 21ee16671579acc9cf77096be096b4d3cf5e9254 Mon Sep 17 00:00:00 2001 From: Rami KHEDAIR Date: Sun, 2 Apr 2023 21:48:34 +0200 Subject: [PATCH 4/5] Update 'code/server/Server/Room.cs' --- code/server/Server/Room.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/code/server/Server/Room.cs b/code/server/Server/Room.cs index 182ef55..9e201ac 100644 --- a/code/server/Server/Room.cs +++ b/code/server/Server/Room.cs @@ -115,6 +115,7 @@ namespace Server } if (isHost) { + semaphore.Release(); playerJoin.Value.Close(); } else -- 2.36.3 From 2003fedc5177106d36e374d69a769f6f00a0b147 Mon Sep 17 00:00:00 2001 From: rakhedair Date: Mon, 3 Apr 2023 13:03:47 +0200 Subject: [PATCH 5/5] dernier push --- code/server/Server/Room.cs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/code/server/Server/Room.cs b/code/server/Server/Room.cs index 9e201ac..15ff422 100644 --- a/code/server/Server/Room.cs +++ b/code/server/Server/Room.cs @@ -92,7 +92,11 @@ namespace Server semaphore.Release(); } catch (SocketException){ - semaphore.Release(); + try + { + semaphore.Release(); + + }catch { } isDisconected = true; break; } @@ -115,7 +119,12 @@ namespace Server } if (isHost) { - semaphore.Release(); + try + { + semaphore.Release(); + + } + catch { } playerJoin.Value.Close(); } else -- 2.36.3