如何从客户端向套接字发送结构变量?

时间:2012-11-16 19:43:03

标签: c sockets client

我正在进行套接字编程。客户端必须将结构变量发送到服务器。我该怎么办呢?我创建了服务器和客户端,此时我已经陷入困境。

PS:我在C编码。

2 个答案:

答案 0 :(得分:0)

在客户端使用write并在服务器端读取? 我想你必须更精确.. 它始终是相同的数据结构吗?如果不是,你怎么知道你收到了哪条消息?

答案 1 :(得分:0)

假设您正在尝试发送结构的实例,您可以直接发送二进制数据(使用结构的大小编写结构)。这假设您在结构中没有任何指针,并且您的结构定义在两侧都完美匹配(同样的位对齐)。

这不是很便携,并做了很多假设。

更好的选择是将数据编码为标准格式。我喜欢JSON,主要是因为它很简单并且有很多解析器。您可以将结构编码为JSON(请参阅http://json.org/了解库),通过套接字发送它,并在另一侧对其进行解码。

您还需要发送数据的大小,因此您可能需要提出一个简单的协议(前4个字节是JSON数据的大小,然后发送JSON数据)。

自定义协议非常糟糕,因此您可能需要查看标准化协议。如果您只想通过TCP发送二进制数据,请考虑WebSocket协议。这基本上就是我所描述的,但更灵活一点。

这就是我所做的,而且效果非常好。