public async Task ProcessPacketsAsync(Packet[] packet, ClientInfo info){ foreach(Packet p in packet){ switch(p.PacketType){ case 0: var strea = Encoding.ASCII.GetString(p.data); Console.WriteLine(strea); log.Add(strea); int c = clients.IndexOf(info); BroadcastData(Packet.ToBytes(new Packet(-3,-1,Encoding.ASCII.GetBytes(strea),0)),(x)=>clients.IndexOf(x)!=c); break; case 2: BroadcastData(Packet.ToBytes(new Packet(-3,-1,Encoding.ASCII.GetBytes(info.Name+" has disconnected"),0))); log.Add(info.Name+" has disconnected"); Console.WriteLine(info.Name+" has disconnected"); info.Client.Close(); clients.Remove(info); break; default: Console.WriteLine("Unrecognized Packet Recieved"); break; } } }
public static Packet ToPacket(ClientInfo client){ Packet pack = new Packet(-1,-2,null,5); byte[] name = Encoding.ASCII.GetBytes(client.Name); pack.data=name; return pack; }
public Client(string name){ client= new TcpClient(); clientinfo = new ClientInfo(client,name); }
public void Disconnect(ClientInfo clientinfo) { BroadcastData(Packet.ToBytes(new Packet(-3, -1, Encoding.ASCII.GetBytes(clientinfo.Name + " has disconnected"), 0))); log.Add(clientinfo.Name + " has disconnected"); Console.WriteLine(clientinfo.Name + " has disconnected"); clientinfo.Client.Client.Close(); clients.Remove(clientinfo); }