0
对于新项目,我正在使用GPS跟踪设备。该设备每10秒发送一次信息给我的java服务器。我也创建了一个android应用程序。在android应用程序中,我打开与服务器的连接,发送数据并再次关闭连接。从GPS跟踪设备读取,输入流
问题是跟踪设备不会每次都关闭连接。
我有什么:
我有一个启动一个新线程时,有一个新的连接multithreades服务器。 我可以阅读跟踪器发送给我的信息,但只有第一个点,然后我不再收到信息(好吧,我收到它,但我不能让它显示)。
当我使用的代码.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
如果你需要长度为127,用char [] buffer = new char [127];替换'char [] buffer = new char [0x127];''。 0x值被解释为十六进制,它是十进制的295。如果您尝试读取295个字节并仅发送127个字节,则read()将永远等待,否则缓冲区永远不会被填充。 – Stephan
我改变了,但那不是解决方案。抱歉。事实上,我会打开连接。该设备发送127个字符...我需要这些字符。 10秒钟后设备再次发送。然后。我再次需要这些字符......所以连接必须保持开放,但每次需要127个字符。 – TwinsIT