void process_client() { TcpClient mClient = client; NetworkStream stream = mClient.GetStream(); Status = "Connected to a client\n"; BinaryReader reader = new BinaryReader(stream); int option = reader.ReadInt32(); if (option == 99) { CA = reader.ReadString(); return; } clients.Add(mClient); SomeData itm = null; if (option == 1) { itm = new SomeData(); int len = reader.ReadInt32(); itm = (SomeData)Helper.deSerilize(reader.ReadBytes(len)); data.Add(itm); } ShowData(); //listen for messages while (mClient.Connected) { try { option = reader.ReadInt32(); if (option == 2) { byte[] b = Helper.getBytes("lst"); mClient.Client.Send(b); Server.SendToClient(mClient, data); } else if (option == 3) { int recever = reader.ReadInt32(); int dataLen = reader.ReadInt32(); byte[] msg = reader.ReadBytes(dataLen); TcpClient reciever = clients[recever]; NetworkStream rec = reciever.GetStream(); reciever.Client.Send(Helper.getBytes("msg")); BinaryWriter recW = new BinaryWriter(rec); recW.Write(itm.username); recW.Write(msg.Length); recW.Write(msg); recW.Flush(); } else if (option == 4) { int ix = clients.IndexOf(mClient); clients.RemoveAt(ix); data.RemoveAt(ix); mClient.Close(); } } catch { continue; } } }