2014-10-10 61 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

這是怎麼回事:PKT的長度?我試着寫0,它在服務器端打印3621743。我檢查了其他一些網站,並且有幾個人遇到了其他流問題。我閱讀了關於大vs小序列出現的問題,但我不確定這裏存在什麼問題,因爲我使用的數據流應該可以正常工作。

回答

3

如果您在一側致電readInt(),則應在另一側致電writeInt(int)。改變這種

out.write(process.length()); 

out.writeInt(process.length()); 

從的Javadoc write(int)

指定字節(參數b的低8位)寫入到基礎輸出流。

+0

完美。我知道這是基本的。謝謝您的幫助! – Rahul 2014-10-10 22:31:23

1

使用out.writeInt(process.length());而不是out.write(...);,因爲您之後從流中讀取了整數。

相關問題