У меня небольшие проблемы с DataInputStreams,
Итак, у меня есть данные для локального сервера, я знаю, что байты, которые я прочитал, будут следовать этому формату
0x01, чтобы указать, что это строка
затем случайное количество байтов
с последующим трейлингом 0x00 0x00,
У меня проблемы с чтением с сервера,
вот мой метод чтения
public static String convertFromServer(DataInputStream dis) throws IOException{
//Buffer to hold bytes being read in
ByteArrayOutputStream buf = new ByteArrayOutputStream();
if(dis.read() != -1){
//Check to see if first byte == 0x01
if(dis.read() == 0x01){
//Check if byte dosnt equal 0x00, i need it to check if it is actually 0x00 0x00
while(dis.read() != 0x00){
buf.write(dis.read());
}
}
if(dis.read() == 0x03){
while(dis.read() != 0x00){
buf.write(dis.read());
}
}
}
String messageRecevied = new String(buf.toByteArray());
return messageRecevied;
}
Если я немного двусмысленна, дайте мне знать.
Я получаю данные обратно, но это не совсем правильно, в основном я отправляю по байтовому массиву, где первый элемент равен 0x01 для указания строки, затем строка в байтах и, наконец, последние 2 элемента. 0x00 и 0x00, затем эти данные затем отправляются мне обратно с сервера, сервер определенно получает данные, просто когда я читаю обратно, они не верны, письмо будет отсутствовать
этот код записывает кодирует данные в формате 0x01, затем сообщение в байтах, затем 0x00,0x00
public static void writeStringToBuffer(ByteArrayOutputStream buf,String message){
buf.write(0x01);
byte[] b = message.getBytes();
for(int i =1; i<message.getBytes().length+1;i++ ){
buf.write(b[i-1]);
}
buf.write(0x00);
buf.write(0x00);
}