我有一个 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/