2010-02-06 13 views
5

Mi chiedevo se esistesse un'API per fare networking che funzionasse su Windows, Mac e Linux. Mi piacerebbe fare un gioco di carte che 2 persone possano giocare attraverso una connessione TCP.API di rete cross platform

+0

È anche possibile utilizzare SDL_net! – luddbro

risposta

7

ci sono alcune opzioni per questo, un po 'più facile da usare rispetto ad altri:

  • TAEG (Apache Portable Runtime) - Molto popolare. Abbastanza facile da usare. Include molte funzionalità aggiuntive utili per la programmazione di rete (thread, mutex, ecc.)

  • ACE - Popolare tra lo spazio incorporato. Personalmente, ho trovato un'API piuttosto complicata e non molto semplice da usare.

  • Boost: se hai un discreto livello di sofisticazione con C++ (modelli, metaprogrammazione, ecc.), Le librerie Boost sono generalmente molto buone. Non sono sicuro di quanto siano popolari le librerie di rete asincrone Boost nel mondo reale.

  • QT - Popolare come un kit di strumenti dell'interfaccia utente, ma ha un grande set di threading, gestione degli eventi, librerie di rete. IMO, questo è di gran lunga il più facile da usare.

E 'importante stare lontano da utilizzando la libreria socket Berkeley, come le implementazioni su sistemi operativi sono estremamente variabili, e si perderà un po' di tempo per sintonizzare loro come si porta il tuo software su sistemi operativi.

Le mie preferenze personali: APR.

2

la maggior parte delle prese berkeley funziona ovunque.

0

Ho la sensazione che lo Apache Portable Runtime possa aiutare con quello che stai cercando. Apache HTTPD ha utilizzato questa libreria internamente per astrarre il codice specifico della piattaforma in modo che il codice del server si concentri sulla logica e richiami i metodi nell'APR e questi si traducono in funzioni del sistema operativo sottostante.

Naturalmente, potrebbe avere più strumenti in esso che si strettamente necessario ...

+0

Hai guardato l'APR? È enorme e complesso. –

+1

On Huge: true, ma è necessario fornire un'astrazione dalle API del sistema operativo, così come Java, in realtà, o .Net. Sul complesso - non più così che le alternative. Come indicato in un'altra risposta, l'APR fornisce alcuni eccellenti apis di threading poiché httpd ha testato ampiamente questo spazio. –

1

Il NRL ha davvero un grande libreria di procedure di rete che supporta una grande varietà di piattaforme. Hanno anche un eccellente supporto da parte degli sviluppatori nelle loro mailing list.

Protolib

+0

+1 Da parte mia, sembra davvero buono! –

2

È possibile utilizzare ACE o Boost.Asio:

A proposito di ACE:

Maggiore portabilità - componenti ACE rendono facile scrivere applicazioni in rete simultanee su una piattaforma OS e rapidamente porto loro a molte altre piattaforme OS. Inoltre, poiché ACE è open source, software libero, non devi mai preoccuparti di essere bloccato in una particolare piattaforma del sistema operativo o configurazione del compilatore.

A proposito di spinta:

Boost.Asio è una libreria multi-piattaforma C++ per la rete e il basso livello di I/O di programmazione che fornisce agli sviluppatori un modello asincrono coerente con un approccio moderno C++.

1

Per questa semplice applicazione è possibile utilizzare le funzioni standard di "presa Berkeley" che sono per lo più portatili. Puoi anche utilizzare Boost's abstractions.

Se sono necessarie funzioni di sicurezza come SSL/TLS (che non è necessario per un gioco semplice, suppongo), esistono librerie open source come OpenSSL, GNU TLS, Mozilla NSS.