跨平台网络API

时间:2010-02-06 22:19:17

标签: c++ api networking cross-platform

我想知道是否有一个API可以在Windows,Mac和Linux上运行。我想制作一个2人可以通过TCP连接播放的纸牌游戏。

8 个答案:

答案 0 :(得分:7)

有一些选择,有些比其他更容易使用:

  • APR(Apache Portable Runtime) - 非常受欢迎。相当容易使用。包含许多便于网络编程的附加功能(线程,互斥等)

  • ACE - 在嵌入式领域中很受欢迎。就个人而言,我发现它非常复杂,并且使用起来不是很简单。

  • 提升 - 如果你对C ++(模板,元编程等)有一定程度的复杂性,那么Boost库通常非常好。我不确定Boost异步网络库在现实世界中有多受欢迎。

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

远离使用berkeley套接字库非常重要,因为跨操作系统的实现变化很大,并且在跨操作系统移植软件时调整它们会失去相当多的时间。

我的个人偏好:APR。

答案 1 :(得分:2)

大多数伯克利插座api无处不在。

答案 2 :(得分:2)

您可以使用ACEBoost.Asio

关于ACE:

  

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

关于提升:

  

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

答案 3 :(得分:1)

NRL拥有非常棒的网络方法库,可支持各种各样的平台。他们也在邮件列表中得到了实际开发人员的大力支持。

Protolib

答案 4 :(得分:1)

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

如果您需要安全功能,如SSL / TLS(我猜你不需要一个简单的游戏),那么有OpenSSL,GNU TLS,Mozilla NSS等开源库。

答案 5 :(得分:0)

我有一种感觉Apache Portable Runtime可能有助于你所寻找的东西。 Apache HTTPD在内部使用此库来抽象其特定于平台的代码,以便服务器代码关注逻辑并调用APR中的方法,并将这些方法转换为基础操作系统函数。

当然,它可能有更多的工具,而不是你真正需要的......

答案 6 :(得分:0)

Synapse是一个很好的多平台网络库。开源,非常容易使用。

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

答案 7 :(得分:0)

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