Existe-t-il une bibliothèque libre open source (en C / C ++) pour les sockets largement utilisée et prenant en charge un large éventail de systèmes d’exploitation (Windows, Unix / Linux, FreeBSD, etc.). Tout comme les pthreads.
Sinon, la seule solution possible serait d’écrire le wrapper de socket pour chaque système d’exploitation. Ou alors, écrire un wrapper contre les bibliothèques WinSock et GNU C sys / socket.h serait suffisant?
Ne pourrais-je pas l’implémenter avec la bibliothèque de sockets fournie avec GNU C. GNU C est disponible pour une large gamme de plates-formes et mon code fonctionnera sur toutes ces plates-formes?
Je crois que le Apache Portable Runtime et les bibliothèques GLib de GTK + ont des API de socket. Étant donné que votre question porte les balises c
et c++
je suppose que vous voulez vraiment des réponses centrées sur le C ++, mais ces deux solutions valent bien que des bibliothèques en C pur.
Pensez à regarder boost ?
QT si ce n’est pas trop grand pour vous. Boost a aussi un code de réseau. wxWidgets a également avec wxNet une bibliothèque réseau. Une autre bibliothèque est Clanlib . Et bien sûr, SDL
ACE peut vous aider!
Ce tutoriel fournit une vue d’ensemble de la couche d’adaptation du système d’exploitation ACE, ainsi que de la conception et de l’utilisation de ses wrappers C ++ Socket.
Développement d’un logiciel de communication portable et efficace avec ACE et C ++
Utilisez boost :: asio. Très bonne bibliothèque. Suivez ce lien http://www.boost.org/doc/libs/1_40_0/doc/html/boost_asio.html
Quelques liens pour vous:
Bibliothèque de sockets C ++
Bibliothèque de sockets C ++ – ComPP 1.3
SimpleSockets
libmsocket
Bibliothèque Komodia TCP / IP
Bibliothèque STLplus C ++
Cadre
nitro ++
Une autre option que vous pouvez essayer est Poco . Poco a beaucoup plus que des sockets, donc si vous avez besoin d’autres choses, il peut également vous les fournir.
En le comparant à d’autres boîtes à outils:
Juste mes deux cents
Oui, vous irez très loin avec un wrapper autour de Winsock et des sockets Berkeley standard. En fait, les différences sont si petites qu’il est presque possible de le faire avec #ifdef
directement dans le code.
Autrement dit, si vous êtes prêt à travailler au niveau du socket. Si vous recherchez quelque chose de plus abstrait, alors bien sûr, cela vous donne une bonne occasion de cacher les différences.
En particulier, Winsock:
WSAStartup()
avant toute autre fonction de socket closesocket()
WSAGetLastError()
pour obtenir la dernière erreur, et non une erreur errno
. Ce sont les trois plus importants de ma tête, il y en a peut-être plus.
Si vous souhaitez utiliser un wrapper très léger, en C ++ uniquement, de style iostreams autour des sockets BSD, vous pouvez envisager skstream : il est simple et fonctionne bien. Bien entendu, l’interface iostreams elle-même laisse beaucoup à désirer. skstream encapsule select et le socket de très bas niveau vous traite assez bien.
Il n’y a qu’une seule bonne réponse ici. OpenSSL. Car une fois que vous avez le code de socket, vous allez aussi vouloir établir des connexions SSL. Si vous travaillez déjà dans un cadre multi-plateformes particulier, les liaisons OpenSSL peuvent déjà être disponibles. Je ne pense pas qu’il y ait beaucoup d’excuses maintenant pour que SSL / TLS ne permette pas à votre application de commencer.