2012-09-07 51 views
0

我試圖從套接字讀取,直到我達到「\ 0」(空)。這是Flash使用的終結符。我也有這個問題,在C(++)。我應該如何閱讀,直到 0/null與套接字?

while ((inputLine = in.readLine()) != null) { 
    outputLine = kkp.processInput(inputLine); 
    out.println(outputLine); 
    if (outputLine.equals("Bye.")) 
    break; 
} 

從Oracle Java文檔此示例代碼不會在我的情況下工作,因爲「的readLine」將只算\ r \ n和這樣。我不確定如何讀入緩衝區,我對如何執行操作有一些想法,但我不知道如何實現。

+0

請問你的Java代碼是什麼樣子? – Philipp

+0

請參閱http://stackoverflow.com/questions/1686789/java-bufferedreader-for-zero-terminated-strings – andersoj

+0

在該帖子中鏈接到的解決方案@andersoj(使用StringBuilder等)不解析(返回)我的數據直到我斷開連接,然後它會立刻全部到達。 – user1599231

回答

0

你可以做

InputStream in = socket.getInputStream(); 

for(int b; ((b = in.read()) > 0;) { 
    // do something with b. 
} 
// stops at end of file or b == 0. 
+0

但b是一個整數?當然,我想要的實際內容? – user1599231

+1

實際內容是從'int'中可以得到的值爲0到255的字節它不是一個字節的原因是你需要一個額外的值'-1'來表示流結束。 –

-1

您可以使用DataInputStream對象從套接字讀取單個字節。

DataInputStream inStream = new DataInputStream(socket.getInputStream()); 

byte next = inStream.readByte(); 
+1

downvote的原因是什麼? – Philipp