【问题标题】:Cross platform Networking API [closed]跨平台网络 API [关闭]
【发布时间】:2011-01-13 23:18:49
【问题描述】:

我想知道是否有一个 API 可以在 Windows、Mac 和 Linux 上运行网络。我想做一个2人可以通过TCP连接玩的纸牌游戏。

【问题讨论】:

  • 你也可以使用SDL_net!

标签: c++ api networking cross-platform


【解决方案1】:

大多数 berkeley sockets api 都可以在任何地方使用。

【讨论】:

    【解决方案2】:

    我感觉Apache Portable Runtime 可能会帮助您找到所需的内容。 Apache HTTPD 在内部使用这个库来抽象其特定于平台的代码,以便服务器代码专注于逻辑并调用 APR 中的方法并将这些转换为底层操作系统功能。

    当然,它里面的工具可能比你严格需要的要多...

    【讨论】:

    • 你看过 APR 吗?它庞大而复杂。
    • On Huge - 是的,但这是从 OS API 提供抽象的必要条件 - Java 或 .Net 也是如此。关于复杂 - 没有更多的替代品。正如另一个答案中所指出的,APR 提供了一些出色的线程 API,因为 httpd 已经广泛测试了这个空间。
    【解决方案3】:

    NRL 有一个非常棒的网络方法库,支持多种平台。他们的邮件列表中的实际开发人员也为他们提供了出色的支持。

    Protolib

    【讨论】:

    • +1 在我看来,这看起来真的很棒!
    【解决方案4】:

    您可以使用ACEBoost.Asio

    关于ACE:

    增强的可移植性——ACE 组件可以轻松地在一个操作系统平台上编写并发的网络应用程序,并将它们快速移植到许多其他操作系统平台。此外,由于 ACE 是开源的免费软件,您永远不必担心被锁定在特定的操作系统平台或编译器配置中。

    关于提升:

    Boost.Asio 是一个用于网络和低级 I/O 编程的跨平台 C++ 库,它使用现代 C++ 方法为开发人员提供一致的异步模型。

    【讨论】:

      【解决方案5】:

      Synapse 是很好的多平台网络库。开源且非常易于使用。

      http://www.ararat.cz/synapse/doku.php/download

      【讨论】:

        【解决方案6】:

        有几个选项,其中一些比其他更容易使用:

        • APR(Apache 便携式运行时)- 非常流行。很容易使用。包括许多便于网络编程的附加功能(线程、互斥锁等)

        • ACE - 在嵌入式领域很受欢迎。就我个人而言,我发现它是一个相当复杂的 API,而且使用起来也不是很简单。

        • Boost - 如果您对 C++(模板、元编程等)有一定的了解,那么 Boost 库通常非常好。我不确定 Boost 异步网络库在现实世界中的流行程度。

        • QT - 作为一个流行的 UI 工具包,但有一组很棒的线程、事件管理、网络库。 IMO,这是迄今为止最容易使用的。

        远离使用 berkeley 套接字库很重要,因为跨操作系统的实现差异很大,而且当您跨操作系统移植软件时,您会浪费大量时间来调整它们。

        我的个人偏好:APR。

        【讨论】:

          【解决方案7】:

          SDL Net 是套接字之上的一个非常简单的抽象层,非常易于使用。见http://www.libsdl.org/projects/SDL_net

          【讨论】:

            【解决方案8】:

            对于这个简单的应用程序,您可以使用大多数可移植的标准“Berkeley socket”函数。你也可以使用Boost's abstractions

            如果您需要 SSL/TLS 之类的安全功能(我猜对于一个简单的游戏来说您不需要),可以使用 OpenSSL、GNU TLS、Mozilla NSS 等开源库。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2014-04-12
              • 2010-09-08
              • 1970-01-01
              • 2011-02-25
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多