我试图从客户端到服务器或者反过来传递整个数据结构。假设我的数据结构如下:
struct temp {
int a;
char b;
}
我正在使用 sendto 函数发送结构变量的地址,并且在另一端使用 recvfrom 函数接收它。但是我无法在接收端获得原始数据。在 sendto 函数中,我将接收到的数据保存到类型为 struct temp 的变量中。
n = sendto(sock, &pkt, sizeof(struct temp), 0, &server, length);
n = recvfrom(sock, &pkt, sizeof(struct temp), 0, (struct sockaddr *)&from,&fromlen);
pkt是struct temp类型的变量。
尽管我接收到了8字节的数据,但如果我尝试打印它,它只会显示垃圾值。有什么方法可以修复吗?
注意:不能使用第三方库。
编辑1:我对这个序列化概念真的很陌生..但是不做序列化难道我就不能通过套接字发送一个结构体吗?
编辑2:当我尝试使用sendto和recvfrom函数发送字符串或整数变量时,接收端能够正确接收到数据。为什么在结构体的情况下不行呢? 如果我不使用序列化函数,那我应该逐个发送结构体成员吗?这确实不是一个合适的解决方案,因为如果有'n'个成员,就必须添加'n'行代码来发送或接收数据。