我正在使用Java,并从服务器接收到一些json字符串。我收到了带有readUTF的json字符串,但是丢失了一些数据。我没有收到每个json数据包的前两个字符。另一个问题是接收到的json字符串存在延迟。例如,服务器发送了一个json字符串,而客户端无法接收它,直到服务器和客户端发送的大约50个json字符串突然显示了所有json字符串。主要问题是什么?
public void run() {
System.out.println("hi from thread" + id);
try {
clientSocket = new Socket("192.168.1.22", id);
output = new PrintStream(clientSocket.getOutputStream());
input = new DataInputStream(clientSocket.getInputStream());
inputLine = new DataInputStream(new BufferedInputStream(System.in));
}
catch( IOException e){
System.out.println(e);
}
String responseLine;
try{
while(true){
output.println( id + " ");
System.out.println("sent:" + id + " ");
responseLine = input.readUTF();
System.out.println("received: " + responseLine);
}
}
catch (IOException e) {
System.out.println(e);
}
}
由于服务器以UTF格式发送数据,所以我无法通过Bufferedreader接收它们
我在使用这样的应用程序之前就遇到了这个问题,主要原因是DataInputStream,它期望输入采用某种特定格式,我认为服务器不遵循该格式,因此请尝试使用BufferedReader:
BufferedReader input = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
然后只要您想读取数据就使用
some_string_here = input.readLine();
注意,这要求发送的每个数据值都以结尾行字符“ \ n”或“ \ r”结尾。