Gibt es eine freie Open-Source-Bibliothek (in C / C ++) für Sockets, die weit verbreitet ist und eine breite Palette von Betriebssystemen unterstützt (Windows, Unix / Linux, FreeBSD usw.). Genau wie Pthreads.
Sonst wäre die einzige Lösung, den Socket Wrapper für jedes Betriebssystem zu schreiben. Oder würde das Schreiben eines Wrappers gegen Winsock und GNU C sys / socket.h Bibliotheken ausreichen?
Wäre es nicht möglich, dass ich es gegen die mit GNU C gelieferte Socket-Bibliothek implementiere? GNU C ist für viele Plattformen verfügbar und mein Code wird auf all diesen Plattformen funktionieren?
Ich glaube, sowohl die Apache Portable Runtime als auch die GLib-Bibliotheken von GTK + haben Socket-APIs. Da Ihre Frage mit c
und c++
markiert ist, vermute ich, dass Sie wirklich C ++ - zentrische Antworten wünschen, aber beide sind gut als reine C-Bibliotheken.
ACE kann Ihnen helfen!
Dieses Lernprogramm bietet einen Überblick über die Anpassungsschicht des ACE-Betriebssystems und den Entwurf und die Verwendung seiner C ++ - Socket-Wrapper
Entwicklung effizienter und tragbarer Kommunikationssoftware mit ACE und C ++
Benutze boost :: asio. Sehr gute Bibliothek. Folge diesem Link Ссылка
Einige Links für Sie:
C ++ Sockets-Bibliothek
C + + Socket-Bibliothek - ComPP 1.3
SimpleSockets
< a href="http://sourceforge.net/projects/kageki/files/libmsocket/"> libmsocket
Komodia TCP / IP-Bibliothek
STLplus C ++ - Bibliothek
Framework
nitro ++
Eine weitere Möglichkeit, die Sie ausprobieren können, ist Poco . Poco hat viel mehr als nur Sockets, also wenn Sie andere Sachen brauchen, kann es auch liefern.
Vergleichen Sie es mit anderen Toolkits:
Nur meine zwei Cent
Ja, Sie werden mit einem Wrapper um Winsock und Standard-Berkeley-Sockel sehr weit kommen. Tatsächlich sind die Unterschiede so klein, dass es fast möglich ist, dies mit #ifdef
direkt im Code zu tun.
Das heißt, wenn Sie bereit sind, auf Socket-Ebene zu arbeiten. Wenn Sie nach etwas Abstraktem suchen, dann gibt es natürlich eine gute Möglichkeit, die Unterschiede zu verbergen.
Insbesondere Winsock:
WSAStartup()
vor einer anderen Socket-Funktion aufrufen closesocket()
verwenden
WSAGetLastError()
verwenden, um den letzten Fehler zu erhalten, nicht einfach errno
. Das sind die drei wichtigsten von meinem Kopf, es könnte mehr geben.
Wenn Sie einen sehr leichten, nur C ++ -, iostreams-artigen Wrapper um BSD-Sockets wollen, könnten Sie skstream
Hier gibt es nur eine richtige Antwort. OpenSSL. Weil, sobald Sie Socket-Code haben, Sie auch SSL-Verbindungen machen wollen. Wenn Sie bereits in einem bestimmten plattformübergreifenden Framework arbeiten, sind OpenSSL-Bindungen möglicherweise bereits verfügbar. Ich glaube nicht, dass es jetzt viel Entschuldigung gibt, damit SSL / TLS Ihre Anwendung nicht von Anfang an aktiviert.