Сторонняя программа позволяет мне запрашивать данные из его порта ip :. Я спрашиваю вещи через этот классический код. Вот конструктор моего класса соединения:
public TcpConnection(String adress, Integer port) {
this.adress = adress;
this.port = port;
try {
socket = new Socket(adress, port);
System.out.println("Opening connection");
out = new PrintWriter(socket.getOutputStream(), true);
InputStream r = new DataInputStream(socket.getInputStream());
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
} catch (UnknownHostException e) {
// TODO: handle exception
} catch (IOException e) {
e.printStackTrace();
}
}
Затем я читаю свой сокет с in.read()
в цикле while.
Это позволяет мне читать сокет int через int, но мне нужна более детальная детализация. (Некоторая информация в ответе кодируется в 2 байта, некоторые в битах, некоторые в 64 байтах ....). Так что мне нужно прочитать 2 байта, а затем немного. затем еще один бит, затем 1 байт и проверьте каждый бит этого байта.
Сначала я подумал: «Хорошо, я конвертирую int в бинарное представление String»,
(через Integer.toBinaryString(whatIget)
)
но это просто глупо и подвержено ошибкам.
Я уверен, что что-то упустил для решения этой случайной проблемы.
Есть идеи?
Edit2: я удаляю «когда я читаю int, я читаю 32 бита (4 байта)», потому что это неправильно, а не в этом вопрос. Таким образом, Reader.read () читает int, если этот метод читает только байт, он читает 1/4 int ??!?