【问题标题】:sending a structure from C server to java (android) client将结构从 C 服务器发送到 java (android) 客户端
【发布时间】:2012-03-12 06:12:33
【问题描述】:

我有一个 C 服务器,它在成功连接和相关查询后将以下结构发送到客户端以填充结构。

 #pragma pack(push)
 typedef struct{
  int a[5];
  char b[5][20];
  char title[5][50];
   }rinfo;
 #pragma pack(pop)

所以我能够成功地将这个结构发送到能够正确读取它的 C 客户端。现在,如果我想为 Java 客户端做同样的事情(我在 Java 中很弱),那么我觉得我应该定义一个具有相同成员的类,例如

  Class rinfo {
  //the above members
    }

但是我如何从 java 套接字读取结构?对于普通消息,我使用

  BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); 

socket 是我的套接字定义。我应该如何更改上述语句以读取我的 C 服务器传递的结构。另外,有没有什么并发症?与字节顺序转换有关吗?我是java编程的新手..谢谢

【问题讨论】:

    标签: android c sockets client


    【解决方案1】:

    我的建议是使用 JSON/XML 作为打包数据的机制。如果你把 if 放在一个 ByteArray 中,那么你需要根据大小来拆分它们,如果大小不同,你会发现很难,并且会抛出异常。

    更进一步,您可以使用 BufferedReader 以字节为单位读取数据,然后将它们转换为字符串以获取完整数据。

    网络上提供了许多可供阅读的示例。

    【讨论】:

    • 你需要一个链接,JSON格式?缓冲阅读器?读取数据?
    • XML 格式化并使用 BufferedReader 读取格式化数据
    • 所以基本思想是我必须将我希望我的结构传递的东西作为 XML 字符串传递,然后传递它?
    • 是的...我建议使用 JSON 而不是 XML,解析和获取数据数据也很简单。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-15
    • 2018-03-02
    • 1970-01-01
    • 1970-01-01
    • 2017-01-26
    相关资源
    最近更新 更多