从C服务器向java(android)客户端发送一个结构



我有一个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编程的新手。。感谢

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

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

网上有很多可以阅读的样本。

相关内容

最新更新