2010-02-06 7 views
5

Ich fragte mich, ob es eine API für die Vernetzung, die unter Windows, Mac und Linux arbeiten würde. Ich würde gerne ein Kartenspiel machen, dass 2 Leute über eine TCP-Verbindung spielen können.Cross-Plattform-Netzwerk-API

+0

Sie können auch SDL_net verwenden! – luddbro

Antwort

7

Es gibt ein paar Möglichkeiten, dies, einige leichter als andere zu verwenden:

  • April (Apache Portable Runtime) - Sehr beliebt. Ziemlich einfach zu bedienen. Enthält viele zusätzliche nützliche Funktionen für die Netzwerkprogrammierung (Threads, Mutexe usw.)

  • ACE - Beliebt unter den eingebetteten Bereichen. Persönlich fand ich es ziemlich kompliziert API und nicht sehr einfach zu bedienen.

  • Boost - Wenn Sie mit C++ (Templates, Metaprogrammierung, etc.) einen vernünftigen Grad an Raffinesse haben, dann sind Boost-Bibliotheken im Allgemeinen sehr gut. Ich bin mir nicht sicher, wie populär die Boost asynchronen Netzwerkbibliotheken in der realen Welt sind.

  • QT - Beliebt als UI-Toolkit, bietet aber eine große Auswahl an Threading-, Event-Management- und Netzwerkbibliotheken. IMO, das ist bei weitem am einfachsten zu verwenden.

Es ist wichtig, von der Nutzung der berkeley Steckdosen Bibliothek zu bleiben weg, wie die Implementierungen für alle Betriebssysteme stark variieren, und Sie werden ein gutes Stück von der Zeit verlieren sie, wie Sie Port Ihre Software über OSs zu stimmen.

Meine persönlichen Vorlieben: APR.

2

Die meisten Berkeley-Steckdosen api funktionieren überall.

0

Ich habe das Gefühl, die Apache Portable Runtime könnte helfen, mit was Sie suchen. Apache HTTPD verwendete diese Bibliothek intern, um seinen plattformspezifischen Code zu abstrahieren, so dass der Servercode sich auf die Logik konzentriert und die Methoden im APR aufruft und diese in zugrunde liegende Betriebssystemfunktionen übersetzt.

Natürlich könnte es mehr Werkzeuge in ihm haben, als Sie unbedingt brauchen ...

+0

Haben Sie sich den APR angesehen? Es ist riesig und komplex. –

+1

On Huge - True, aber das ist eine Notwendigkeit, Abstraktion von der OS-API zur Verfügung zu stellen - so ist Java, wirklich, oder .Net. Auf Komplex - nicht mehr so, dass die Alternativen. Wie in einer anderen Antwort erwähnt, APR bietet einige ausgezeichnete Threading-Apis wie httpd diesen Raum ausgiebig getestet hat. –

1

Das NRL eine wirklich große Bibliothek von Networking-Methoden, die eine Vielzahl von Plattformen unterstützt. Sie haben auch hervorragende Unterstützung von den tatsächlichen Entwicklern auf ihren Mailing-Listen.

Protolib

+0

+1 Von mir sieht das wirklich gut aus! –

2

können Sie ACE oder Boost.Asio verwenden:

Über ACE:

Erhöhte Portabilität - ACE Komponenten machen es einfach, gleichzeitig vernetzte Anwendungen auf einem OS-Plattform und schnell Anschluss schreiben sie zu vielen anderen OS-Plattformen. Da ACE Open-Source-Software ist, müssen Sie sich darüber hinaus keine Sorgen machen, in eine bestimmte Betriebssystemplattform oder Compilerkonfiguration gesperrt zu werden.

über boost:

Boost.Asio ist eine plattformübergreifende C++ Bibliothek für Netzwerk-und Low-Level-I/O-Programmierung, die Entwickler mit einem konsistenten asynchronen Modell bietet einen modernen C++ Ansatz.

1

Für diese einfache Anwendung können Sie die Standard-Berkeley-Socket-Funktionen verwenden, die meist portabel sind. Sie können auch Boost's abstractions verwenden.

Wenn Sie Sicherheitsfunktionen wie SSL/TLS (die Sie nicht für ein einfaches Spiel benötigen, denke ich), gibt es Open Source-Bibliotheken wie OpenSSL, GNU TLS, Mozilla NSS.