2010-02-06 76 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開源庫。