从GPS跟踪设备读取输入流

时间:2011-10-31 23:08:12

标签: java sockets stream inputstream

对于新项目,我使用的是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

1 个答案:

答案 0 :(得分:0)

while表达式包含第二个“read()”,它尝试读取第128个字符。这是阻止并且不同步。

我认为循环中只有一个“read(buffer,0,127)”只能读取127个字符。