[英]Read bytes from socket
我想讀取服務器寫入套接字的確切字節數(精確長度)。 例如,如果服務器寫“ Hello”,下一次服務器寫(“ world”)。 因此,我需要將這兩個寫入捕獲為來自客戶端套接字的兩個讀取。 我已經實現了以下服務器和客戶端,以演示我的問題。 在該示例中,輸出類似於以下內容
1234 ... 89 90 ........ 1034 1035 ...... 2004
我期望的是1
2
3
。
。
2004年
。
我該如何做到這一點。
//server
ServerSocket server = new ServerSocket(9999);
Socket s =server.accept();
InputStream stream = s.getInputStream();
byte[] by = new byte[1024];
while(true){
stream.read(by);
String received = new String(by, 0, by.length, "ISO8859_1");
System.out.println(received);
}
//client
Socket s = new Socket("localhost", 9999);
OutputStream out =s.getOutputStream();
int i =0;
while(true){
i++;
byte[] msg=Integer.toString(i).getBytes();
out.write(msg);
}
可以請一個人幫我做這個嗎..
您不能直接使用TCP。 TCP是一種流協議,它沒有消息。
您需要在此之上構建自己的“協議”。 最簡單的方法是先寫下一條消息將包含的字節數,然后寫消息。
在客戶端,您首先要讀取消息大小,然后讀取整個消息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.