public void RemoveConnection(MyTCPChatUser user, GoodbyMessage message) { StreamWriter writer = new StreamWriter(user.stream); writer.Write(message.ToFullString()); writer.WriteLine(); writer.Flush(); usersList.Remove(user); }
//принимает 1 сообщение от пользователя public string GetMessage(MyTCPChatUser user) { //MyTCPClient client = listener.AcceptTCPClient(); //var client = listener.AcceptTcpClient(); NetworkStream stream = user.stream; StreamReader reader = new StreamReader(stream); string message = reader.ReadLine(); IMessage Msg = MsgPareser.Parse(message); if (Msg is AllMessage A) { A = (AllMessage)Msg; SendToAll(A); return(A.ToOutString()); } else if (Msg is PersonalMessage P) { P = (PersonalMessage)Msg; SendTo(P); return(P.ToOutString()); } else if (Msg is HelloMessage H) { H = (HelloMessage)Msg; //отсылаем всем что новый пользователь подключился AllMessage all = new AllMessage() { Name = H.Name, Content = H.Content }; SendToAll(all); //добавляем клиента и отсылаем обратно ID AddConnection(user, H); //Рассылаем всем новый лист клиентов SendList(); return(H.ToOutString()); } else if (Msg is GoodbyMessage G) { G = (GoodbyMessage)Msg; //удаляем пользователя RemoveConnection(user, G); //рассылаем всем что пользователь вышел AllMessage all = new AllMessage() { Name = G.Name, Content = G.Content }; SendToAll(all); //Рассылаем всем новый лист клиентов SendList(); return(G.ToOutString()); } else { throw new Exception("Recieve message has an invalid type"); } }
public MyTCPChatUser getUser() { var client = listener.AcceptTcpClient(); //создаем нового клиента MyTCPChatUser chatUser = new MyTCPChatUser(client) { Address = Address, Port = Port }; return(chatUser); }
public void AddConnection(MyTCPChatUser user, HelloMessage message) { user.Name = message.Name; user.ID = Guid.NewGuid().ToString(); //добавляем в список usersList.Add(user); //отсылаем ID message.ID = user.ID; StreamWriter writer = new StreamWriter(user.stream); writer.Write(message.ToFullString()); writer.WriteLine(); writer.Flush(); }