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); }