对于新项目,我使用的是GPS追踪设备。该设备每隔10秒向我的java服务器发送一次信息。我还创建了一个Android应用程序。在android应用程序中,我打开与服务器的连接,我发送数据,然后我再次关闭连接。
问题是跟踪设备每次都不会关闭连接。
我有什么:
我有一个多节点服务器,可以在有新连接时启动新线程。 我可以在信息中读到跟踪器发送给我但只有第一点,之后我不再收到信息了(好吧,我收到它,但是我无法显示它)。
当我使用代码.readLine()时它会工作,如果我关闭跟踪器(和连接。但这不是一个解决方案,这不称为实时跟踪
这是我现在用于阅读部分的内容
public Request(Socket connectionSocket) throws IOException {
System.out.println(connectionSocket.getInetAddress().toString());
InputStreamReader temp = new InputStreamReader(connectionSocket.getInputStream());
StringBuilder out = new StringBuilder();
int read = 0;
out = new StringBuilder();
char[] buffer = new char[0x127];
do {
System.out.println("test");
read = temp.read(buffer, 0, buffer.length);
System.out.println(temp.toString());
if (read > 0) {
out.append(buffer, 0, read);
}
System.out.println(out.toString());
this.handleRequest(out.toString());
} while (temp.read() != 0);
connectionSocket.close();
clientSentence = out.toString();
System.out.println(out.toString());
}
有人可以帮助我如何阅读所有信息。信息字符串总是长度为127个字符。
由于
的Wouter
答案 0 :(得分:0)
while表达式包含第二个“read()”,它尝试读取第128个字符。这是阻止并且不同步。
我认为循环中只有一个“read(buffer,0,127)”只能读取127个字符。