【发布时间】:2011-01-13 23:18:49
【问题描述】:
我想知道是否有一个 API 可以在 Windows、Mac 和 Linux 上运行网络。我想做一个2人可以通过TCP连接玩的纸牌游戏。
【问题讨论】:
-
你也可以使用SDL_net!
标签: c++ api networking cross-platform
我想知道是否有一个 API 可以在 Windows、Mac 和 Linux 上运行网络。我想做一个2人可以通过TCP连接玩的纸牌游戏。
【问题讨论】:
标签: c++ api networking cross-platform
大多数 berkeley sockets api 都可以在任何地方使用。
【讨论】:
我感觉Apache Portable Runtime 可能会帮助您找到所需的内容。 Apache HTTPD 在内部使用这个库来抽象其特定于平台的代码,以便服务器代码专注于逻辑并调用 APR 中的方法并将这些转换为底层操作系统功能。
当然,它里面的工具可能比你严格需要的要多...
【讨论】:
NRL 有一个非常棒的网络方法库,支持多种平台。他们的邮件列表中的实际开发人员也为他们提供了出色的支持。
【讨论】:
您可以使用ACE 或Boost.Asio:
关于ACE:
增强的可移植性——ACE 组件可以轻松地在一个操作系统平台上编写并发的网络应用程序,并将它们快速移植到许多其他操作系统平台。此外,由于 ACE 是开源的免费软件,您永远不必担心被锁定在特定的操作系统平台或编译器配置中。
关于提升:
Boost.Asio 是一个用于网络和低级 I/O 编程的跨平台 C++ 库,它使用现代 C++ 方法为开发人员提供一致的异步模型。
【讨论】:
Synapse 是很好的多平台网络库。开源且非常易于使用。
【讨论】:
有几个选项,其中一些比其他更容易使用:
APR(Apache 便携式运行时)- 非常流行。很容易使用。包括许多便于网络编程的附加功能(线程、互斥锁等)
ACE - 在嵌入式领域很受欢迎。就我个人而言,我发现它是一个相当复杂的 API,而且使用起来也不是很简单。
Boost - 如果您对 C++(模板、元编程等)有一定的了解,那么 Boost 库通常非常好。我不确定 Boost 异步网络库在现实世界中的流行程度。
QT - 作为一个流行的 UI 工具包,但有一组很棒的线程、事件管理、网络库。 IMO,这是迄今为止最容易使用的。
远离使用 berkeley 套接字库很重要,因为跨操作系统的实现差异很大,而且当您跨操作系统移植软件时,您会浪费大量时间来调整它们。
我的个人偏好:APR。
【讨论】:
SDL Net 是套接字之上的一个非常简单的抽象层,非常易于使用。见http://www.libsdl.org/projects/SDL_net。
【讨论】:
对于这个简单的应用程序,您可以使用大多数可移植的标准“Berkeley socket”函数。你也可以使用Boost's abstractions。
如果您需要 SSL/TLS 之类的安全功能(我猜对于一个简单的游戏来说您不需要),可以使用 OpenSSL、GNU TLS、Mozilla NSS 等开源库。
【讨论】: