gpt4 book ai didi

java - 从没有客户端的输入流读取数据 "flush()"

转载 作者:可可西里 更新时间:2023-11-01 02:55:47 27 4
gpt4 key购买 nike

我已经实现了一个 Java 程序,它通过 ServerSocket 从 GPS 设备读取数据。

ServerSocket serverSocket = new ServerSocket(13811);
serverSocket.setReceiveBufferSize(receiveBufferSize);
Socket incomingSocket = serverSocket.accept();
InputStream stream = incomingSocket.getInputStream();
byte[] buffer = new byte[1000];
StringBuffer sb = new StringBuffer();
System.out.println("START getting message from TCP stream: " + dateFormat.format(Calendar.getInstance().getTime()));

while (stream.read(buffer) > 0)
{
sb.append(new String(buffer));
System.out.println(sb.toString());
}
System.out.println("[incomingMessage]: " + incomingMessage);

System.out.println("FINISHED getting message from TCP stream: " + dateFormat.format(Calendar.getInstance().getTime()));

但是,我们发现有很大的延迟(即上面系统输出“START...”和“FINISHED...”之间的偏差很大)。时间花在了inputStream.read()上。

如果我使用 Java 客户端连接到上述服务器端口并向其发送数据,服务器的 inputStream 会在几毫秒内读取该消息。下面显示了 Java 客户端代码。

Socket socket = new Socket("localhost", 13811); 
DataOutputStream out = new DataOutputStream(new BufferedOutputStream(socket.getOutputStream()));
String tobesend = "testing message 1";
out.writeBytes(tobesend);
out.flush();
out.close();

但是,如果我在“out.flush()”和“out.close()”之前添加“Thread.Sleep(10*1000)”,服务器端的延迟将变为 10 秒...因此我怀疑如果 GPS 设备没有执行“刷新”并导致服务器端的 inputstream.read() 延迟...

不幸的是,我们无法控制 GPS 设备 TCP 调用,因此我无法对其进行任何修改以强制将其“刷新”消息到我的输入流...请告知服务器端是否可以通过任何方式即使客户端(即 GPS 设备)不执行“刷新”,也没有这种延迟地从输入流读取数据?

最佳答案

接收方无法读取未发送的数据。它不能强制另一端发送也没有发送的数据。

关于java - 从没有客户端的输入流读取数据 "flush()",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9084301/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com