private void OnServer_OnValueChange(object sender, EventArgs e) { if (OnServer.Value == true) { player = 1; // Считываем IP-адреса сервера из TextBox IPAddress ipAddr = IPAddress.Parse(txtIp.Text); port = Convert.ToInt32(Port.Text); //Создаем новый экземпляр объекта ChatServer ChatServer mainServer = new ChatServer(ipAddr, port); // Подключаем обработчик событий StatusChanged к mainServer_StatusChanged ChatServer.StatusChanged += new StatusChangedEventHandler(mainServer_StatusChanged); //Начинаем прослушивать соединения mainServer.StartListening(); // Show that we started to listen for connections // txtLog.AppendText("Monitoring for connections...\r\n"); } }
// Происходит, когда принимается новый клиент private void AcceptClient() { srReceiver = new System.IO.StreamReader(tcpClient.GetStream()); swSender = new System.IO.StreamWriter(tcpClient.GetStream()); // Читаем информацию о счете от клиента currUser = srReceiver.ReadLine(); // Мы получили ответ от клиента if (currUser != "") { // Сохраняем имя пользователя в хэш-таблице if (ChatServer.htUsers.Contains(currUser) == true) { // 0 означает не подключен swSender.WriteLine("0|Это имя пользователя уже существует."); swSender.Flush(); CloseConnection(); return; } else if (currUser == "Administrator") { // 0 означает не подключен swSender.WriteLine("0|Это имя пользователя зарезервировано."); swSender.Flush(); CloseConnection(); return; } else { // 1 означает успешное подключение swSender.WriteLine("1"); swSender.Flush(); // Добавьте пользователя в хэш-таблицы и начните прослушивать сообщения от него ChatServer.AddUser(tcpClient, currUser); } } else { CloseConnection(); return; } try { // Продолжаем ждать сообщения от пользователя while ((strResponse = srReceiver.ReadLine()) != "") { // Если он недействителен, удаляем пользователя if (strResponse == null) { ChatServer.RemoveUser(tcpClient); } else { string[] str = strResponse.Split(' '); if (str[0] != "mov" && str[0] != "Delet") { // В противном случае отправляем сообщение всем остальным пользователям ChatServer.SendMessage(currUser, strResponse); } else { ChatServer.SendMessageMap(currUser, strResponse); } } } } catch { // Если что-то пошло не так с этим пользователем, отключите его ChatServer.RemoveUser(tcpClient); } }