0

我正在研究套接字编程。客户端必须向服务器发送一个结构变量。我该怎么办?我已经创建了服务器和客户端,但我被困在了这一点上。

PS:我正在用C编码。

4

2 回答 2

0

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

于 2012-11-16T19:45:48.710 回答
0

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

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

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

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

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

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

于 2012-11-16T19:53:29.607 回答