【问题标题】:Using strange format for sending dat through a socket使用奇怪的格式通过套接字发送数据
【发布时间】:2011-08-29 16:43:28
【问题描述】:

我在 android 中有一个应用程序,它是一种客户端-服务器。

我已经建立了这两者之间的连接,现在我正在通过套接字发送数据。

服务器发送数据,客户端从套接字读取数据。

服务器向套接字发送一些 GPS 数据(经度、纬度),为了真正发送它,我使用以下格式:

公共类坐标{

  private final double lon;

  private final double lat;

  private final int workerId;

  public Coordinate(double lat, double lon, int workerId) {

    this.lat = lat;
    this.lon = lon;

    this.workerId=workerId;
  }

  public double getLon() {
    return lon;
  }

  public double getLat() {
    return lat;
  }
  public int getwId(){
      return workerId;
  }


}

因此,对于我要发送的每个经度和纬度,我都添加了一个 int 的 workerID。

所以最后我通过我的套接字发送了一个 Coordinate 类的实例。

   Coordinate coord=new Coordinate(lat,lon,workerID);
   os=new PrintStream(clientSocket.getOutputStream());

    os.println(coord);

好吧,直到这里一切都很好。

在客户端,我以这种方式读取数据:

Scanner is=new Scanner(new DataInputStream(socket.getInputStream()));

while(is.hasNext())
            {
                try{
                Coordinate coord=is.next();
                    System.out.println(coord.getLon());

                    }
                catch(Exception e){
                    e.printStackTrace();
                }
            }

问题是我使用它从套接字输入流中读取的 Scanner 类返回 String,但我通过套接字发送的内容完全不同......

有人知道我如何将输入数据转换为坐标,或者我应该如何继续从我通过套接字发送的内容中找到纬度和经度?????

谢谢!

编辑:我使用这种格式是因为我需要这些数据!!

【问题讨论】:

    标签: java sockets


    【解决方案1】:

    PrintStream.println(Object) 写入一个从对象的Object.toString() 方法获得的字符串(PrintStream 通常只将字符串写入它所连接的输出流)

    您可以为坐标创建一个文本编码(带有编码和解码功能),您可以使用它而无需对您的代码进行太多改动

    或使用可序列化功能并使用 ObjectStreams

    【讨论】:

      【解决方案2】:

      os.println(coord) 只是写一个引用,没有多大意义,如果你想发送有意义的东西,那么Coordinate 类应该实现Serializable。看看this article 的解释。

      (可选)我建议您使用 JSON 格式在两端转储和加载。它将为您提供一种简单易读的互操作方式。

      【讨论】:

      • 是的,这就是我所说的“可选”。使用可序列化,您只能使用 JSON 实现 Java2Java 通信,您可以在更多平台/语言之间交换数据。更多的是一种类似 RESTFul 的方法。如果您不太关心互操作性并且只有您的客户端会访问该服务,那么请使用 Java Serializable。
      • Actualli 我的服务器在 java 上,而我的客户端在 android-java ....他是唯一读取该数据的人。Thx
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-24
      • 2016-04-06
      • 1970-01-01
      • 2011-06-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多