小编xlo*_*ger的帖子

从输入流读取数据而无需客户端"flush()"

我已经实现了一个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()));
Run Code Online (Sandbox Code Playgroud)

但是,我们发现存在很大的延迟(即Sys out"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); …
Run Code Online (Sandbox Code Playgroud)

java sockets tcp inputstream flush

0
推荐指数
1
解决办法
3372
查看次数

标签 统计

flush ×1

inputstream ×1

java ×1

sockets ×1

tcp ×1