Posted by:zming
Posted on:2005-01-10 20:36
原本的c socket客户端在向socket server发送数据包时,数据包的类型是一个c 语言中的嵌套结构体类型,例如:
typedef struct person
{
long personid
unsigned long age;
moneycard card;
char otherinfo[20];
}aperson;
typedef struct moneycard
{
char cardid[10];
long money;
}
在c程序的socket client中向server端传送的数据包的类型是person类型,即send(int sockfd, const void *msg, int len, int flags); 中的msg是一个person类型的变量。现在用java实现这个socket client,请教如果做到?(我的部分程序如下,好像有错误)
--------------------------------------------------
........//省略
DataInputStream in=new DataInputStream (socket.getInputStream ());
DataOutputStream out=new DataOutputStream (socket.getOutputStream ());
int personid = 1001;
int age = 15;
String carid ="123456";
int money = 500;
String otherInfo = "hello";
out.writeInt(personid);
out.writeInt(age);
out.writeChars(carid);
out.writeInt(money);
out.writeChars(otherInfo);
..........//省略
----------------------------------------------------
请问:在c语言中struct类型的数据在内存中是如何存储的?如果在struct A 中嵌套struct B,是否是将B中的数据按顺序放入A中相应位置?即如果按上面的两个struct例子,在内存中的存放格式是否为:
personid(long)--age(unsigned long)--carid(char[])--money(long)--otherInfo(char[])