我有一个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中的数据,然后将它们转换为字符串以获得完整的数据。
网上有很多可以阅读的样本。