gpt4 book ai didi

c - 使用 C 中的 UDP 套接字将结构从客户端传递到服务器

转载 作者:太空宇宙 更新时间:2023-11-04 03:40:52 24 4
gpt4 key购买 nike

在 C 语言中如何使用套接字将结构从 UDP 客户端传递到 UDP 服务器?您如何访问服务器上结构包含的变量?如果传输以下结构,服务器如何看到姓名或年龄是什么?

struct animal {
int age;
char name[25];
};

最佳答案

正确的答案是使用 Google Protobuf 之类的东西,这将保护您免受字节序、整数大小以及服务器和客户端版本之间结构的 future 变化的影响。 .这是一个将您的结构成员打包成中性数据包格式的库,然后可以在另一端进行解析。

然而,对于学习低级 UDP 套接字的人来说,在两台相同的机器之间发送这样的结构很简单:

send( sock, &myanimal, sizeof( myanimal ), 0 );

在服务器上:

recv( sock, &newanimal, sizeof( myanimal ), 0 );

(对未连接的 UDP 套接字使用 sendtorecvfrom)。

这将生成一个字节对字节的副本,其工作方式与 memcpy() 一样。如果您的主机不匹配,则该副本可能与您的结构不一致。但如果他们这样做,您将像在客户端上一样在服务器上访问它。

您可以使用 socketpair() 在您自己的进程中创建套接字的两端(很像 pipe())并测试它,甚至无需构建 UDP 部分.在那里工作后,继续使用 UDP。

关于c - 使用 C 中的 UDP 套接字将结构从客户端传递到服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28785489/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com