private BNetPacketReader obtainPacket() throws IOException { byte magic; do { magic = BNInputStream.readByte(); } while (magic != (byte) 0xFF); try { return new BNetPacketReader(BNInputStream); } catch (SocketTimeoutException e) { throw new IOException("Unexpected socket timeout while reading packet", e); } }