private void cleanInstances()
        {
            int pos = 0;

            while (true)
            {
                //Lock
                Lock.WaitOne();
                if (GameInstances.Count > 0)
                {
                    if (!ConnUtility.TestClient(GameInstances.ElementAt(pos).Joueur2) && !ConnUtility.TestClient(GameInstances.ElementAt(pos).Joueur1))
                    {
                        GameInstances.Remove(GameInstances.ElementAt(pos));
                    }
                    else
                    {
                        pos++;
                    }
                }
                if (pos >= GameInstances.Count)
                {
                    pos = 0;
                }
                //Unlock
                Lock.ReleaseMutex();
            }
            //List<GameInstance> Rip = new List<GameInstance>();
            ////ici
            //foreach (GameInstance instance in GameInstances)
            //{
            //    if (!ConnUtility.TestClient(instance.Joueur2) && !ConnUtility.TestClient(instance.Joueur1))
            //        Rip.Add(instance);

            //    /*if ((instance.Joueur1 == null || !instance.Joueur1.Connected) && (instance.Joueur2 == null || !instance.Joueur2.Connected))
            //    {

            //            GameInstances.Remove(instance);
            //    }
            //    else if(instance.Joueur1 != null && instance.Joueur2 != null)
            //        if (!testconn(instance.Joueur2) && !testconn(instance.Joueur1))
            //            GameInstances.Remove(instance);*/

            //}

            //foreach (GameInstance instance in Rip)
            //{
            //    GameInstances.Remove(instance);
            //}
        }
Пример #2
0
 public void AjoutJoueur(TcpClient client)
 {
     if (ConnUtility.TestClient(Joueur1))
     {
         Joueur2            = client;
         IsWaitingForPlayer = false;
         jeu = new Thread(StartGame);
         jeu.Start();
     }
     else
     {
         LogConsole.LogWithTime("La connection à " + ConnUtility.GetIP(Joueur1) + " à été terminer");
         Joueur1 = client;
     }
 }
Пример #3
0
        private void StartGame()
        {
            NetworkStream StreamJ1 = Joueur1.GetStream();
            NetworkStream StreamJ2 = Joueur2.GetStream();

            PosShips GrilleJ1;
            PosShips GrilleJ2;


            LogConsole.Log("Début Partie");

            ConnUtility.SerializeAndSend(StreamJ1, "Start");
            ConnUtility.SerializeAndSend(StreamJ2, "Start");

            StreamJ1.ReadTimeout = StreamJ2.ReadTimeout = 60000;
            try
            {
                LogConsole.Log("Lecture 1 ");
                GrilleJ1 = (PosShips)ConnUtility.ReadAndDeserialize(StreamJ1);
                LogConsole.Log("Lecture 2 ");
                GrilleJ2 = (PosShips)ConnUtility.ReadAndDeserialize(StreamJ2);
                LogConsole.Log("Tentative Lecture");
                LogConsole.Log(GrilleJ1.PPorteAvion.ToString());
                LogConsole.Log(GrilleJ2.PPorteAvion.ToString());
            }
            catch (Exception e)
            {
                LogConsole.Log("Erreur réception grille Erreur: " + e.Message);
            }



            /*recevoir tableau*/

            /*partir boucle Joueur1*/
            //jeu.Abort();
            while (true)
            {
                Thread.Sleep(500);
            }

            MatchMakingServeur.GameInstances.Remove(this);
        }
        public void ListenServeur()
        {
            Stop = false;
            //TcpListener serverSocket = new TcpListener(8888);
            TcpListener serverSocket = new TcpListener(IPAddress.Any, 8080);

            try
            {
                serverSocket.Server.ReceiveTimeout = 500;
                serverSocket.Start();
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }


            //TcpClient clientSocket = default(TcpClient);


            LogConsole.LogWithTime("Serveur à démarrer");
            while (!Stop)
            {
                if (serverSocket.Pending())
                {
                    TcpClient clientSocket = serverSocket.AcceptTcpClient();

                    LogConsole.LogWithTime("Nouvelle connection de " + ConnUtility.GetIP(clientSocket) /* IPAddress.Parse(((IPEndPoint)clientSocket.Client.RemoteEndPoint).Address.ToString())*/);
                    Lock.WaitOne();
                    if (CheckExistingInstances(clientSocket))
                    {
                        GameInstances.Add(new GameInstance(clientSocket));
                    }
                    Lock.ReleaseMutex();
                }
            }
            LogConsole.LogWithTime("Serveur s'est arrêter");
            serverSocket.Stop();
        }