2014-10-10 2 views
1

Клиент:Java DataInputStream сторона

 out = new DataOutputStream(connection.getOutputStream()); 
     String process; 
     System.out.println("Connecting to server on "+ host + " port " + port +" at " + timestamp); 
     process = "Connection: "+host + ","+port+","+timestamp; 
     System.out.println("client len " + process.length()); 
     out.write(process.length()); 

Печать: Клиент LEN 55

стороне сервера:

 in = new DataInputStream(connection.getInputStream()); 
     while (true) { 
      int len = in.readInt(); 
      System.out.println("Length of pkt: "+len); 

Печать: Длина ПКТ: 927166318

Что здесь происходит ? Я попробовал написать 0, и он напечатал 3621743 на стороне сервера. Я проверил некоторые другие сайты, и у некоторых людей были проблемы с другими потоками. Я читал о проблемах, возникающих с большой или маленькой сущностью, но я не уверен, что проблема здесь, так как я использую потоки данных *, которые должны работать нормально друг с другом.

ответ

3

Если вы звоните readInt() с одной стороны, вы должны позвонить по телефону writeInt(int) с другой стороны. Изменение этого

out.write(process.length()); 

к

out.writeInt(process.length()); 

Из Javadoc для write(int),

Записывает указанный байт (низкие восемь битов аргумента б) в выходной поток базового.

+0

Perfect. Я знал, что это что-то основное. Спасибо за помощь! – Rahul

1

Используйте out.writeInt(process.length()); вместо out.write(...);, так как после этого вы читаете Integer из потока.

Смежные вопросы