[英]How can I read and split data from file but Ignoring some data too in Java
[英]How to read data stream ignoring the data type in Java
我正在用Java
編寫客戶端服務器應用程序。 步驟如下:
客戶端使用以下命令向注冊節點發送HTTP格式的消息
注冊節點將類似格式的消息發送到服務器。
客戶端和服務器可以通話(很像SIP)。
現在,我已經創建了客戶端和服務器的套接字,但是如果我想使用DataInputStream和DataOutputStream來輸入和輸出數據,由於從DataInputStream讀取readDouble之類的方法,我還需要確定數據的類型。
我不知道該怎么做。
抱歉,如果我的描述有點含糊,在這里,將傳送一些示例消息。
REGISTER john@google.com SIPL/1.0CRLF
To: john@google.comCRLF
From: john@google.comCRLF
Call-ID: a74fbCRLF
CSeq: 0CRLF
Expires: 200CRLF
Contact: 74.125.226.161:20132CRLF
CRLF
SIPL/1.0 200 okCRLF
To: barney@google.comCRLF
From: 74.125.226.161:20300CRLF
Call-ID: 9934bcd2CRLF
CSeq: 10CRLF
Content-Length: 21CRLF
Contact: 74.125.226.161:20305CRLF
CRLF
file=foo
characters=10
任何申請將不勝感激!
由於您正在讀取ASCII文本,並且必須處理換行符,因此可以使用讀取器和寫入器,並使用java.io.BufferedReader
讀取數據,從而可以逐行讀取。
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String line = reader.readLine();
StringBuilder buffer = new StringBuilder();
while ( line != null) {
buffer.append(line);
line = reader.readLine();
// you can check here if the line is empty and decide only to read the header
// or to split your header and body into different buffers
}
String fullText = buffer.toString();
如果發送文本數據,則也可以使用類似的方法:
PrintWriter writer = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));
writer.println("GET / HTTP/1.1");
writer.println("Header: value");
writer.println(); // end of header
...
writer.flush(); // if you need to flush the buffer before closing
writer.close(); // when done - flushes and closes
將一切都在一個try-catch-finally
與塊close()
的方法, finally
(或者,如果你使用的Java 7,一試,與資源)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.