【问题标题】:How can i create binary persistent connection in c++? [closed]如何在 C++ 中创建二进制持久连接? [关闭]
【发布时间】:2011-11-12 15:45:41
【问题描述】:

我想在 C++ 中的两个应用程序之间创建持久的 TCP 连接。我正在寻找跨平台解决方案 linux、windows。我听说过有关 XMPP 的一些信息,但它似乎使用 XML 进行数据封装,但我想以二进制形式传输数据,如果可能的话,像 iostream 之类的东西。

如何在 c++ 中创建该连接?

【问题讨论】:

  • C++ 中没有“服务器”、“客户端”或“XML”这样的概念。您必须指定一整套您想到的平台和协议详细信息。
  • 好的。我已经指定了。为什么投票这么快?
  • 好的,更好。 TCP 连接通常由“socket”库处理,在 Linux 和 BSD 上是 Berkeley Sockets,在 Windows 上是 WinSock。不过,最终的界面非常相似。但所有这些都是非常低级的,也许你想要一个高级包装器。我想到了 Boost ASIO。
  • @MiroK 我没有投反对票,但问题表明研究很少。

标签: c++ networking connection


【解决方案1】:

beej :如果您想在没有库的情况下使用套接字,这是一个很棒的站点。获得跨平台套接字代码并不难。 Winsock 基于 BSD 套接字。网站列出了差异。

asio:很棒但很少有文档。体面的例子。

ACE : 关于这本书的几本书。几年前对我来说看起来很复杂,所以我从不亲自操心它。不过很受欢迎。

添加使用 asio 而不是 ACE 的原因(我的观点)。 ACE 已经存在很长时间了。这对它的稳定性很有好处,并且已经证明了它的性能。但它是在 C++ 是一种与现在大不相同的语言时开发的。 asio 更现代。如果您还没有使用 ACE 的背景,它会更容易使用。

【讨论】:

    【解决方案2】:

    我还要提到 Qt 的好用 networking primitives,因为它是跨平台的并且非常好用。如果我们假设您想使用 TCP,那么您将创建一个 QTcpServer 的实例,开始侦听并接受传入的 QTcpSocket 连接。在这些上,您可以随意编写二进制数据(因为它继承自QIODevice),但您也可以使用通过QDataStream 实现的序列化。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-03
      • 2021-03-26
      • 1970-01-01
      相关资源
      最近更新 更多