PDA

View Full Version : [C++] Networking


agente mm8
29-12-2009, 10:27
Zalve a tutti :D
Avrei bisogno di un framework per scrivere in c++ applicazioni "network". In pratica qualcosa che mi consenta di far comunicare due o più macchine senza scendere al livello dei sockey. Qualcosa tipo twisted (framework per python) ma per C++.
Grazie a tutti in anticipo.

cionci
29-12-2009, 10:58
Dipende dal livello di dettaglio che vuoi raggiungere. Sopra alle API/system call ci possono essere, ad esempio, le librerie QT.

agente mm8
29-12-2009, 14:32
Le Qt non credo vadano bene... io ho bisogno di qualcosa che mi consenta di scrivere facilmente un server e un client che si scambino dati.

cionci
29-12-2009, 14:45
Le Qt non credo vadano bene... io ho bisogno di qualcosa che mi consenta di scrivere facilmente un server e un client che si scambino dati.
Le QT hanno classi per socket server, per socket client e per gestire un pool di thread. Una classe che fa da server si crea in 15 minuti sapendo dove mettere le mani ;)
Il meccanismo è semplicissimo. C'è un QTcpServer che sta in ascolto su una porta, ogni volta che c'è una connessione pronta invia un segnale. Chi recupera il segnale preleva il QTcpSocket della nuova connessione e lo da in pasto ad un thread del pool.

fero86
29-12-2009, 17:54
Le Qt non credo vadano bene... io ho bisogno di qualcosa che mi consenta di scrivere facilmente un server e un client che si scambino dati. col C++ non hai molte alternative rispetto ai socket: su Windows c'é COM ma devi valutare se conviene effettivamente rispetto ai socket. di sicuro partendo da conoscenze zero convengono i socket perché per realizzare applicazioni basate su COM devi studiare molta roba.

programmando in altri linguaggi invece ci sono tecnologie distribuite molto piu facili da usare: in .NET c'é WCF e in Java c'é RMI; queste due é molto piu facile che convengano rispetto ai socket.

cionci
29-12-2009, 18:22
Dipende poi da quello che deve fare, io credevo una classica applicazione client-server di rete, sviluppando anche il protocollo. Se invece si vuole astrarre completamente la rete, rendendo quasi invisibile la presenza dell'infrastruttura sottostante, quindi simile ad RMI di Java e a DCOM presente su Windows, per C++ c'è CORBA.
Una buona implementazione di CORBA è OmniORB. Soluzione tra l'altro completamente portabile.

Ora non mi sovviene una tecnologia di questo tipo presente nel mondo Linux...ci penso un attimo.

Su quale sistema operativo volevi creare i tuoi programmi ?

cionci
29-12-2009, 18:31
Ora non mi sovviene una tecnologia di questo tipo presente nel mondo Linux...ci penso un attimo.
D-Bus. La tecnologia è anche implementata dalle librerie QT, sinceramente non l'ho mai provata od usata, quindi non ne conosco le eventuali limitazioni.
Corba l'ho provato, ma non è così immediato, anzi.

agente mm8
29-12-2009, 19:03
Sviluppo su linux. Darò un'occhiata sia a OmniORB che alle Qt. Grazie mille a tutti.