public Packet readData() { byte[] header = new byte[3]; byte[] buffer = new byte[1]; List <Byte> data = new List <Byte>(); PacketType type; if (this.sock.Receive(header) < 3) { throw new InvalidPacketException("Packet header was too short."); } type = PacketType.getTypeFromHeader(header); while (this.dataRemaining()) { this.sock.Receive(buffer); data.Add(buffer[0]); } return(new Packet(type, NetUtils.byteListToArray(data))); }