Was ist eine beliebte, plattformübergreifende, freie und Open-Source-Socket-Bibliothek [geschlossen]

8

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?

    
ata 19.10.2009, 06:41
quelle

10 Antworten

3

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.

    
Chris Lutz 19.10.2009, 06:47
quelle
13

Betrachten Sie booten ?

    
carl 19.10.2009 06:44
quelle
8

QT wenn es nicht zu groß für Sie ist. Boost hat auch Netzwerkcode. wxWidgets hat mit wxNet auch eine Netzwerkbibliothek. Eine weitere Lib ist Clanlib . Und natürlich SDL

    
Tobias Langner 19.10.2009 06:44
quelle
4

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 ++

    
Satbir 19.10.2009 06:47
quelle
3

Benutze boost :: asio. Sehr gute Bibliothek. Folge diesem Link Ссылка

    
Davit Siradeghyan 19.10.2009 10:56
quelle
3

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 ++

    
lsalamon 19.10.2009 12:23
quelle
3

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:

  1. Qt hat eine GUI und einige sehr ausgeklügelte Funktionen, die Sie in Poco nicht finden werden, aber es ist viel größer.
  2. Boost hat nicht so viel wie Poco in der Art der tatsächlichen Funktionalität, aber es hat Bibliotheken wie Referenzwrapper, MPL und Präprozessor, die nirgendwo sonst zu finden sind.
  3. Ich kann mich nicht sehr gut an ACE erinnern, aber ich erinnere mich, dass es in Bezug auf Quellcode und Komponenten sehr groß war. ACE scheint für Netzwerkanwendungen mit sehr hoher Leistung verwendet zu werden, so dass es möglicherweise übertrieben ist. Aber andererseits bin ich mir nicht sicher.

Nur meine zwei Cent

    
blwy10 19.10.2009 12:30
quelle
3

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:

  • Erfordert, dass Sie "starten", indem Sie WSAStartup() vor einer anderen Socket-Funktion aufrufen
  • Erlaubt es Ihnen nicht, plain old close () auf einem Socket zu verwenden; Sie müssen closesocket() verwenden
  • Erfordert, dass Sie WSAGetLastError() verwenden, um den letzten Fehler zu erhalten, nicht einfach errno .

Das sind die drei wichtigsten von meinem Kopf, es könnte mehr geben.

    
unwind 19.10.2009 06:45
quelle
-2

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.

    
Chris Becke 19.10.2009 09:58
quelle

Tags und Links