【发布时间】:2017-12-06 00:05:20
【问题描述】:
我想通过一个用 C 语言编写的 tcp 服务器/客户端程序中的套接字发送数据结构。但是,当我尝试打印发送的数据时,它不会打印任何内容。我现在已经意识到以这种方式发送结构是一个坏主意,我所看到的帖子对于找到一种真正实现这项工作的方法并不是很有帮助。这是有问题的数据结构:
#define BUFFSIZE 1024
#define USERLEN 32
#define OPTLEN 16
struct message{
char option[OPTLEN];
char user[USERLEN];
char buff[BUFFSIZE];
char target[USERLEN];
int sockid;
};
提前致谢。
【问题讨论】:
-
您是否已通读此之前对一个非常相似的问题的回答。在什么时候这对你不起作用? stackoverflow.com/questions/8000851/…
-
只需将其转换为 char 数组以对其进行序列化,如果您需要将其限制为实际的字符,则只需 base64 对其进行编码
-
唯一可能导致问题的部分是
sockid。有一个问题是您的buff实际包含 1000 多个字符而不是几个字符的频率;为这么长的字段只发送活动字符可能会更好,但其他人可能会被完整发送。查找“序列化”——这是您发送数据所需的过程,以及接收数据所需的“反序列化”。 -
如果你想使用二进制协议,我建议谷歌的 protobuf :)
标签: c sockets data-structures tcp structure