android - 从 C 服务器发送结构到 java (android) 客户端

标签 android c sockets client

我有一个 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())); 

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

最佳答案

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

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

网络上有许多可供阅读的示例来执行此操作。

关于android - 从 C 服务器发送结构到 java (android) 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9662483/

相关文章:

无法计算 C 中插槽的回合数

java - 如何读取java流直到达到特定字节

python - 我可以使用 python 套接字发送更多数据进行 DDOS 攻击吗?

javascript - 从浏览器运行本地网络服务器的可能性

android - Android 中的 ListView 标题

android - 如何同时显示两个单独的通知?

c - 对 `readline' 的 undefined reference

c - 在Linux内核中设置socket输出端口号

iphone - Android 应用程序首选项的用户界面的最佳实践是什么?

java - HandlerThread 没有在后台运行?