我想知道是否有一个API可以在Windows,Mac和Linux上运行。我想制作一个2人可以通过TCP连接播放的纸牌游戏。
答案 0 :(得分:7)
有一些选择,有些比其他更容易使用:
APR(Apache Portable Runtime) - 非常受欢迎。相当容易使用。包含许多便于网络编程的附加功能(线程,互斥等)
ACE - 在嵌入式领域中很受欢迎。就个人而言,我发现它非常复杂,并且使用起来不是很简单。
提升 - 如果你对C ++(模板,元编程等)有一定程度的复杂性,那么Boost库通常非常好。我不确定Boost异步网络库在现实世界中有多受欢迎。
QT - 作为UI工具包流行,但拥有一套很好的线程,事件管理和网络库。 IMO,这是迄今为止最容易使用的。
远离使用berkeley套接字库非常重要,因为跨操作系统的实现变化很大,并且在跨操作系统移植软件时调整它们会失去相当多的时间。
我的个人偏好:APR。
答案 1 :(得分:2)
大多数伯克利插座api无处不在。
答案 2 :(得分:2)
您可以使用ACE或Boost.Asio:
关于ACE:
增强的可移植性 - ACE组件可以轻松地在一个OS平台上编写并发网络应用程序,并快速将它们移植到许多其他操作系统平台。此外,因为ACE是开源的免费软件,所以您永远不必担心被锁定到特定的操作系统平台或编译器配置。
关于提升:
Boost.Asio是一个用于网络和低级I / O编程的跨平台C ++库,它使用现代C ++方法为开发人员提供一致的异步模型。
答案 3 :(得分:1)
NRL拥有非常棒的网络方法库,可支持各种各样的平台。他们也在邮件列表中得到了实际开发人员的大力支持。
答案 4 :(得分:1)
对于这个简单的应用程序,您可以使用大多数可移植的标准“Berkeley套接字”功能。您也可以使用Boost's abstractions。
如果您需要安全功能,如SSL / TLS(我猜你不需要一个简单的游戏),那么有OpenSSL,GNU TLS,Mozilla NSS等开源库。
答案 5 :(得分:0)
我有一种感觉Apache Portable Runtime可能有助于你所寻找的东西。 Apache HTTPD在内部使用此库来抽象其特定于平台的代码,以便服务器代码关注逻辑并调用APR中的方法,并将这些方法转换为基础操作系统函数。
当然,它可能有更多的工具,而不是你真正需要的......
答案 6 :(得分:0)
Synapse
是一个很好的多平台网络库。开源,非常容易使用。
答案 7 :(得分:0)
SDL Net是一个非常简单的抽象层,位于套接字之上,非常容易使用。请参阅http://www.libsdl.org/projects/SDL_net。