2015-04-02 76 views
0

我正在實現一個Socket,它將接受來自服務器的數據。服務器將發送數據記錄,該記錄將由stx,data,etx分隔。我的問題是,如果我使用以下代碼:java bufferedreader,聲明readline

client = new Socket("XXX.XXX.XXX.XXX", 50000); 
BufferedReader d = new BufferedReader(new InputStreamReader(client.getInputStream())); 

String line; 
while ((line = d.readLine()) != null) { 
    // do something 
} 

它會自動執行每個數據記錄的分離嗎?或者我必須自己做?由於

STX =啓動文本(ASCII字符)

ETX =最終文本(ASCII字符)

+0

也許我不完全理解,但..什麼是「數據記錄」,你是什麼意思是「由stx,data,etx分隔」? – exoddus 2015-04-02 11:42:53

回答

1

如果你讀了BufferedReader.readLine()的Javadoc

讀取一個文本行。換行符被換行符('\ n'),回車符('\ r')或回車符後面的換行符中的任何一個結束。

所以你可以看到它沒有做任何你想要的東西。

或者我必須自己做?

我建議你使用自定義分隔符的掃描儀,或者一次解析BufferedReader的一個字符。

+0

你是對的!我的錯。我的頭像現在的混音器。我會考慮你的答案。謝謝@Peter Lawrey。 – KostasC 2015-04-02 13:18:14