2010-02-06 74 views
5

我想知道是否有一个API可以在Windows,Mac和Linux上工作。我想制作一个2人可以通过TCP连接玩的纸牌游戏。跨平台网络API

+0

您也可以使用SDL_net! – luddbro 2015-04-15 20:16:05

回答

7

这有几个选择,一些比别人更容易使用:

  • APR(Apache可移植运行时) - 很受欢迎。非常容易使用。包含许多用于网络编程(线程,互斥等)的附加功能。

  • ACE - 在嵌入式空间中很受欢迎。就我个人而言,我发现它是一个相当复杂的API,不太直接使用。

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

  • QT - 作为UI工具包很受欢迎,但拥有一套完善的线程,事件管理和网络库。国际海事组织,这是迄今为止最容易使用的。

它从使用Berkeley套接字库走就走是很重要的,因为跨操作系统的实现差异很大,你将失去的时间公平位调整他们为你的端口跨操作系统的软件。

我的个人偏好:APR。

2

大部分的berkeley sockets api都可以使用。

0

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

当然,它可能含有更多的工具比你严格需要...

+0

你看过APR吗?这是巨大而复杂的。 – 2010-02-06 22:31:44

+1

巨大 - 真实,但这是从操作系统API提供抽象的必要条件 - Java,真正的或.Net也是如此。关于复杂 - 不要再提供其他选择。正如另一个答案指出的那样,APR提供了一些优秀的线程API,因为httpd已经广泛地测试了这个空间。 – 2010-02-06 22:53:26

1

夺标有网络,支持各种平台的方法,一个真正伟大的图书馆。他们在邮件列表中也拥有实际开发人员的出色支持。

Protolib

+0

+1从我这里看,真好! – 2010-02-06 22:26:17

2

您可以使用ACEBoost.Asio

关于ACE:

增强了便携性 - ACE组件可以很容易地写上一个操作系统平台,快速端口并发的网络化应用他们到许多其他操作系统平台。而且,由于ACE是开源的免费软件,因此您无需担心被锁定到特定的操作系统平台或编译器配置中。

关于提升:

Boost.Asio的是网络和低级别的I/O设计,提供开发人员使用现代C++的做法一致的异步模型一个跨平台的C++库。

1

对于这个简单的应用程序,您可以使用大多数便携式的标准“伯克利插座”功能。您也可以使用Boost's abstractions

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