从GPS设备读取句子NMEA时的“java.net.SocketException:Connection reset”

时间:2012-03-01 12:02:07

标签: java sockets gps nmea

我买了一个gps,我用sms消息测试了这个,并用自己的软件来检索lat / long,它工作正常,请看截图: enter image description here

现在我确信与gprs->internet的通信有效,所以我想创建自己的软件,可以执行软件制造商不具备的许多其他功能。 在我的第一次反思中,我尝试在端口7070上使用socket tcp / ip(java)监听NMEA消息,这是我的源代码:

 import java.io.*;
 import java.net.*;


 public class Serveur {
 static final int port = 7070;
  public static void main(String[] args) throws Exception {              

    ServerSocket s = new ServerSocket(port);
    System.out.println("waiting for connexion from GPS 7070");
    Socket socClient = s.accept();
    System.out.println("Connexion GPS ok");

           BufferedReader in = new BufferedReader(
                           new InputStreamReader(socClient.getInputStream())
                          ); 
            PrintWriter out = new PrintWriter(
                         new BufferedWriter(
                            new OutputStreamWriter(socClient.getOutputStream())), 
                         true);   
    String str = in.readLine(); 

    System.out.println("the GPS message  is : " + str);         

    in.close();
    out.close();

    socClient.close();
  } 
  }

我尝试通过本地网络上的java客户端发送消息,但它可以工作..

但我不明白的问题是:当我收到来自GPS的消息时,我收到此错误:

waiting for connexion from GPS 7070
Connexion GPS ok
Exception in thread "main" java.net.SocketException: Connection reset
    at java.net.SocketInputStream.read(Unknown Source)
    at java.net.SocketInputStream.read(Unknown Source)
    at sun.nio.cs.StreamDecoder.readBytes(Unknown Source)
    at sun.nio.cs.StreamDecoder.implRead(Unknown Source)
    at sun.nio.cs.StreamDecoder.read(Unknown Source)
    at java.io.InputStreamReader.read(Unknown Source)
    at java.io.BufferedReader.fill(Unknown Source)
    at java.io.BufferedReader.readLine(Unknown Source)
    at java.io.BufferedReader.readLine(Unknown Source)
    at serveur.Serveur.main(Serveur.java:27)
  

在serveur.Serveur.main(Serveur.java:27)

错误来自line String str = in.readLine();

如果它的软件能够拦截NMEA的消息,为什么我的应用程序没有?

更新

我闻到了网络,这就是结果:

[我的GPS使用的协议] [4]

从GPS接收的第一个数据包(the hidden ip adress is my fixed public address): enter image description here

软件的第一个响应(1/2)(它是一条空信息):

enter image description here

来自软件(2/2): enter image description here

来自GPS的

enter image description here

来自软: enter image description here

来自GPS(1/2)(其空信息): enter image description here

最后来自GPS(2/2)的长/纬度/速度......: enter image description here

正如我已经写过的那样,GPS发送了空消息......所以这里是所有细节。

@Peter Lawrey :我试图逐字节读取消息,但我从netbeans收到错误,,,你能给我一段代码吗?谢谢 希望这能帮助我。

1 个答案:

答案 0 :(得分:2)

您确定GPS正在发送一条线路(以新线路结束)吗?

如果不是,我会反复使用read()来获取它发送的所有数据(直到达到EOF)