// Connecte le client au serveur. // Le pseudo choisi doit être différent de ceux des autres clients connectés. private void Connect_Click(object sender, RoutedEventArgs e) { // Serveur, port et pseudo par défaut : localhost, 28234, Anonyme String serveurName = (serveurBox.Text.Length == 0) ? "localhost" : serveurBox.Text; String portNumber = (portBox.Text.Length == 0) ? "28234" : portBox.Text; pseudo = (pseudoBox.Text.Length == 0) ? "Anonyme" : pseudoBox.Text; // L'objet RemoteInterface récupère ici la référence de l'objet du serveur. // On donne l'URI (serveur, port, classe du serveur) et le nom de l'interface. RemoteInterface = (RemotingInterface.IRemoteChain)Activator.GetObject( typeof(RemotingInterface.IRemoteChain), "tcp://" + serveurName + ":" + portNumber + "/Serveur"); if (RemoteInterface.RegisterUser(pseudo)) { chatBox.Text += "Connecté au serveur.\n"; boutonConnect.IsEnabled = false; pseudoBox.IsEnabled = false; serveurBox.IsEnabled = false; portBox.IsEnabled = false; boutonDisconnect.IsEnabled = true; boutonPing.IsEnabled = true; boutonEnvoi.IsEnabled = true; messageBox.IsEnabled = true; // Récupération des utilisateurs connectés. List <string> usersList = RemoteInterface.GetConnectedUsers(); for (int i = 0; i < usersList.Count - 1; i++) { clientsBox.Items.Add(usersList[i]); } // Création et lancement du thread pour la réception de messages. lastMessage = ""; receiveThread = new Thread(() => ReceiveMessages()); receiveThread.Start(); } else { chatBox.Text += "Pseudo existant. Veuillez choisir un autre pseudo.\n"; } }
// Déconnecte le client du serveur. private void Disconnect_Click(object sender, RoutedEventArgs e) { // Stoppe le thread de réception de messages. receiveThread.Abort(); // Indique la déconnexion. RemoteInterface.UnregisterUser(pseudo); RemoteInterface = null; chatBox.Text += "Déconnecté du serveur.\n"; // Vide la liste des utilisateurs connectés. clientsBox.Items.Clear(); boutonConnect.IsEnabled = true; pseudoBox.IsEnabled = true; serveurBox.IsEnabled = true; portBox.IsEnabled = true; boutonDisconnect.IsEnabled = false; boutonPing.IsEnabled = false; boutonEnvoi.IsEnabled = false; messageBox.IsEnabled = false; }