如何通过winsock发送自定义数据(可能来自指针的数据)

时间:2014-04-18 13:53:47

标签: c++ winsock

我一直在阅读winsock,我想创建一个小游戏来测试它。现在我有一个客户端/服务器系统,所以我需要客户端将数据发送到服务器。

我可以发送char *的数据(就像send函数想要的那样),但是我无法弄清楚如何将带有数据的结构发送到另一台计算机。 我读过我需要使用序列化,但这似乎写入文件,我不需要。 所以,我需要的是结构可以通过winsock发送,可以在服务器上重建,反之亦然。

有人可以帮助我理解这个问题吗?任何帮助表示赞赏。

编辑: 以下是否足够?

tester test;
test.pos = 10;

send(sock, (char*)&test, (int)strlen(test), 0);

更多编辑:

这就是现在作为测试的效果。这是一个好方法吗?

tester test;
test.pos = 350;

char* buffer = (char*)&test;
tester* testFollowup = (tester*)buffer;
cout << (int)testFollowup->pos;

getchar();
return 0;

1 个答案:

答案 0 :(得分:3)

我强烈建议您在开始使用库时为您处理此问题 - 一个好的,轻量级的示例是Protocol Buffers,这是由Google设计的序列化协议。

  

协议缓冲区是一种灵活,高效,自动化的机制   序列化结构化数据 - 想想XML,但更小,更快,更好   简单。然后,您可以定义一次如何构建数据的结构   您可以使用特殊生成的源代码轻松编写和读取   您的结构化数据往返于各种数据流并使用   各种语言。您甚至可以不用更新数据结构   破坏根据“旧”格式编译的已部署程序。

如果Google协议缓冲区不适合您,请随意keep looking around,我相信您会找到可以使用的内容:)