public SceneClient() : base() { _TFinDeTour = new Thread(TFinDeTour); _TReceiveFile = new Thread(TReceiveFile); etape = EtapeReseau.etape1_initialisation; fileState = FileReseau.sleep; receive = ""; }
public SceneServer() : base() { boutons.Add(new BoutonLien(Divers.X / 2 - 200, 700, new Rectangle(0, 0, 800, 300), null, 5)); fileState = FileReseau.sleep; _TFinDeTour = new Thread(TFinDeTour); _TReceiveFile = new Thread(TReceiveFile); etape = EtapeReseau.etape1_initialisation; receive = ""; client = null; }
private void TReceiveFile() { while (true) { int i; if ((i = Netools.Read(client)) == 57) // 9 { fileState = FileReseau.reception_en_cours; } } }
public override void UpdateScene(GameTime gameTime) { switch (etape) { case EtapeReseau.etape1_initialisation: sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); etape = EtapeReseau.etape2_connection; break; case EtapeReseau.etape2_connection: Ecoute(); etape = EtapeReseau.etape3_synchronisation; break; case EtapeReseau.etape3_synchronisation: if (!een3) { InitialiserPartie(); een3 = true; } int i; if ((i = Netools.Read(client)) == 72)// h { int j; if ((j = Netools.Read(client)) == 105)// i { Console.SetCursorPosition(0, 2); Console.WriteLine((char)i + " " + (char)j); etape = EtapeReseau.etape4_partie; } } _TFinDeTour.Start(); _TReceiveFile.Start(); break; case EtapeReseau.etape4_partie: if (fileState == FileReseau.reception_en_cours) { Console.WriteLine("reception_avant"); Netools.ReadText(client, (byte)'$', receive); Console.WriteLine("reception_apres : " + receive); try { Console.WriteLine("deserializer_avant"); StreamWriter writer = new StreamWriter(new FileStream("G", FileMode.Create, FileAccess.ReadWrite)); writer.Write(receive); partie.gameplay = (SystemeDeJeu)Divers.deserializer("G"); Netools.ClearPresence(partie.earthPenguin); Console.WriteLine("deserializer_apres"); } catch (Exception e) { Console.WriteLine(e.Message); } fileState = FileReseau.sleep; Console.WriteLine("filereseau_to_sleep"); } else if (fileState == FileReseau.envoie_en_cours) { try { Console.WriteLine("serializer_"); Divers.serializer(partie.gameplay, "G.bin"); Console.WriteLine("send_serializer"); Thread.Sleep(5000); Netools.SendText(client, "G.bin"); } catch (Exception e) { Console.WriteLine(e.Message); } Console.WriteLine("filereseau_to_sleep"); fileState = FileReseau.sleep; } else { if (partie.gameplay.tourencours == 0) { partie.UpdateReseauServer(gameTime, this); } else { Netools.UpdateTransition(gameTime); } } break; case EtapeReseau.etap5_fin_de_partie: break; default: break; } }
public void TFinDeTour() { while (true) { int f; if ((f = Netools.Read(client)) == 93) // ']' { fileState = FileReseau.reception_en_cours; priorite = true; ChangementTour(); partie.time = 0; } } }
public override void UpdateScene(GameTime gameTime) { Console.SetCursorPosition(0, 0); Console.Write(etape); Console.SetCursorPosition(0, 1); switch (etape) { case EtapeReseau.etape1_initialisation: sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); etape = EtapeReseau.etape2_connection; break; case EtapeReseau.etape2_connection: #region Connection while (tentative > 0) { try { sock.Connect(new IPEndPoint(IPAddress.Parse(Netools.writebox.text), 4242)); break; } catch (Exception e) { Console.WriteLine(e.Message); } tentative--; Thread.Sleep(250); } if (sock.Connected) { etape = EtapeReseau.etape3_synchronisation; } else { Engine.scenes.Pop(); } #endregion break; case EtapeReseau.etape3_synchronisation: if (!een3) { InitialiserPartie(); partie.gameplay.tourencours = 0; een3 = true; } Netools.Send(sock, "H"); // H -> en binaire sheet: 72 Netools.Send(sock, "i"); // i -> en binaire sheet: 105 etape = EtapeReseau.etape4_partie; _TFinDeTour.Start(); break; case EtapeReseau.etape4_partie: if (fileState == FileReseau.reception_en_cours) { Console.WriteLine("reception_avant"); Netools.ReadText(sock, (byte)'$', receive); Console.WriteLine("reception_apres : " + receive); try { Console.WriteLine("deserializer_avant"); StreamWriter writer = new StreamWriter(new FileStream("G.bin", FileMode.Create, FileAccess.ReadWrite)); partie.gameplay = (SystemeDeJeu)Divers.deserializer("G"); Netools.ClearPresence(partie.earthPenguin); Console.WriteLine("deserializer_apres"); } catch (Exception e) { Console.WriteLine(e.Message); } fileState = FileReseau.sleep; Console.WriteLine("filereseau_to_sleep"); } else if (fileState == FileReseau.envoie_en_cours) { try { Console.WriteLine("serializer_"); Divers.serializer(partie.gameplay, "G"); Console.WriteLine("send_serializer"); Thread.Sleep(5000); Netools.SendText(sock, "G"); } catch (Exception e) { Console.WriteLine(e.Message); } Console.WriteLine("filereseau_to_sleep"); fileState = FileReseau.sleep; } else { if (partie.gameplay.tourencours == 1) // Si c'est a mon tour { partie.UpdateReseauClient(gameTime, this); } else { Netools.UpdateTransition(gameTime); } } break; case EtapeReseau.etap5_fin_de_partie: break; default: break; } }
private void TFinDeTour() { while (true) { int f; if ((f = Netools.Read(sock)) == 93) { fileState = FileReseau.reception_en_cours; ChangementTour(); partie.time = 0; } } }