在c中通过套接字发送结构

时间:2014-11-06 10:22:33

标签: c sockets tcp send recv

我正在编写一个在c。

中使用套接字编程的程序

在此程序中,客户端和服务器不断传输和接收数据。

当我使用这种代码在套接字上发送和接收整数时

//in the program sending data
int data;
len= send(s,(char *)&(data),sizeof(data),0);

//in the program receiving data
int num;
len = recv(s,&num, sizeof(num) , 0);

上面的代码工作正常,我可以传输和接收数字。

在一种情况下,我正在尝试发送表单结构

struct sample{
int num;
char chain[10*hops+10];
};

//in the program sending data
struct sample s1;
len= send(s,(char *)&(s1),sizeof(s1),0);

//in the program receiving data
struct sample s2;
len = recv(s,&s2, sizeof(s2) , 0);

在我尝试发送和接收结构的示例中,它无法正常工作。如何成功发送和接收结构?

注意: 1)Hops是预定义的变量。两个程序中的跳数值相同。 2)通过不工作我的意思是:当我收到结构并在num中打印值。打印的值不是相同,而是零!

1 个答案:

答案 0 :(得分:0)

如果您尝试发送结构,则必须使用序列化和反序列化,阅读相关内容,您可以从以下开始:

Serialization issues while sending struct over socket