-1

我一直在互联网上搜索以找到有关 C++ 套接字编程的教程。我找到了其中的一些,但它们都没有真正帮助我制作我可以使用的服务器。

我希望用 C++ 制作一个可以发送和接收数据包的服务器,但是我能找到的所有教程/示例都是关于发送/接收字符串的。

我在 C++ 方面的经验一般。我正在使用带有 Ubuntu (Linux) 的计算机。

如果有人可以向我解释我如何制作一个发送/接收而不是字符串的服务器,或者向我指出一个很好的教程来解释我如何,最好是使用 POSIX-api,它会非常棒并且对我有很大帮助。

-小岛

编辑

(我显然说的是“包裹”,但我的意思是“包裹”)

所以,假设我想要一个 Java 游戏,比如 MineCraft,并用 C++ 编写它的服务器。根据 MinecraftCoalition,(Java)客户端发送包含数据的“数据包”。我想知道,我如何接收(或解释)这些数据包?

MineCraft 联盟参考

4

4 回答 4

2

如果通过你在谈论一个二进制数据块,那么它很简单,但你必须知道你正在发送的架构的字节序- 这可能与接收器不同,这可能意味着数据未正确重建。

你最好看看像Boost.Asio这样的东西,它会大步向前,并且是专门为 C++ 量身定做的。

于 2012-12-24T15:18:19.503 回答
1

如果你想发送原始数据(一个 char 数组),C 字符串的区别是微妙的(你必须记住终止的 '\0')。这就是为什么大多数文档不会真正发挥作用的原因。

我的建议是:

  1. 选择一种将数据转换为二进制格式的方法(boost::serialize,协议缓冲区是不错的选择,但不是唯一的选择)。
  2. 选择一些抽象库,如 boost.Asio 甚至 zmq(同样还有其他选择)。

我不相信(但这是个人观点,可能不共享)大多数用例都需要处理原始套接字,并且一些 C++ 抽象总是令人愉快的。

于 2012-12-24T15:25:39.783 回答
0

套接字将仅发送和接收字节数组。转换为字符串很容易,因此通常以它为例。您可以将这些字节数组转换为您的包的任何内容。

于 2012-12-24T15:05:02.413 回答
0

尝试http://www.linuxhowtos.org/C_C++/socket.htm获取基本的客户端-服务器教程。

于 2012-12-24T15:56:22.803 回答