2009-08-01 3 views
2

verwenden ich einige Netzwerk-Socket-Programmierung in C++ möchten und die C++ Sockets library gefunden haben, zu tun.Wie die C++ Sockets Bibliothek

Erstens, ist dies ein guter Weg in C++ zu gehen? Normalerweise würde ich in C einige der Dinge verwenden, die beej in his tutorial beschreibt.

Zweitens, wie kompiliere ich die Beispiele auf der Website gegeben? Ich kann es nicht aus ihrer Installations-/Konfigurationsanleitung herausfinden. Also lade ich die tar.gz in meine Linux-Box, was dann?

ein spezielles Beispiel haben, wie kann ich kompilieren und die DisplaySocket example laufen?

Danke.


EDIT: Vielen Dank für die schnellen Antworten. Ein Kommentar aber. Ich bin nicht wirklich damit beschäftigt, die Netzwerkprogrammierung zu verstehen, da ich denke, dass ich das bereits gut genug mache. Ich möchte wissen, ob es etwas Besonderes gibt, das in C++ genutzt werden kann und - wenn "die C++ Sockets Library" eine gute Wahl ist - wie man es benutzt.

+1

Wow, die Website ist Teil eines Webrings. Das ist ziemlich hip. – Eric

+0

"Ich lade die tar.gz in meine Linux-Box, was dann" - sieht so aus, als würde man sie überall entpacken, eventuell mit dem Makefile und der Konfigurationsdatei basteln (Anleitung zum Ausführen von make hier: http: //www.alhem. net/Sockets/tutorial/install.html, Konfigurationsdatei auf der "nächsten" Seite). Dann führe make aus. Fügen Sie dann das Verzeichnis, in dem sich die Client-Header befinden, dem Include-Pfad Ihres Codes und das Build-Verzeichnis dem Pfad des Bibliotheks-Includes hinzu. Dann kompiliere deinen Code. Wo "Ihr Code" könnte das Beispiel sein. Soweit ich weiß, haben die Beispiele Ziele - sie würden, wenn ich das Makefile schreiben würde ... –

Antwort

9

Das ist nicht "die" C++ Sockets Bibliothek, es ist "a" C++ Sockets Bibliothek. Boost.asio hat eine andere (http://www.boost.org/doc/libs/1_39_0/doc/html/boost_asio.html).

(Community Wiki, da ich Ihnen bei Ihrer Frage nicht wirklich helfen kann - ich habe den Code, den Sie fragen, nie kompiliert, daher weiß ich nicht, an welchem ​​Punkt Sie über ein Problem gestolpert sind).

+0

Es nennt sich die C++ Sockets Library, weshalb ich den Fragetitel geändert habe. –

+0

Danke. Ich denke, es ist fair, "das" zu schreiben, wenn ich auf die spezifische Projektseite verlinke. – anderstornvig

+0

OK, ich werde sie für irgendeine Verwirrung verantwortlich machen.In jedem Fall besteht die Möglichkeit, dass Boost in größerem Umfang eingesetzt wird, und dies könnte ein besserer Weg sein, allein auf diesen Gründen zu gehen. Außerdem könntest du es durch deine Distribution ziehen, was bedeutet, dass keine Installationsprobleme auftreten. Nur ein Gedanke. –

3

Netzwerkprogrammierung besser verständlich mit grundlegenden Sockeln api (BSD oder WinSock) werden würde, anstatt eine Socket-Bibliothek, die über Sockets und ihr Verhalten der meisten der Feinheit versteckt.

+1

Mehr als 5 Minuten auf der Raw-Socket-API zu verbringen, ist Zeitverschwendung. Alles weitere würde dir beibringen, dass es sich um die kleinen Bugs handelt, die jede Implementierung hat, die jede Bibliothek irrelevant machen würde. Die "Netzwerkprogrammierung" wird am besten aus einer Bibliothek gelernt, die die Inversion von Steuerung und Ereignisbehandlung modiert. Siehe Schmidt C++ Network Programming Bücher. – keraba

+0

welche Bugs zum Beispiel? – Indy9000

+0

Siehe Stevens. Vielleicht wären "undokumentierte Unterschiede zwischen Plattformen" eine bessere Beschreibung. – keraba

0

Ich mag die ACE networking library verwenden, wenn ich Code in C++ Vernetzung schreiben. Ich denke, es macht einen guten Job, einige der komplizierten Details zu abstrahieren, die das Netzwerkcoding schmerzhaft machen, aber es nicht bis zu dem Punkt macht, wo es verbirgt, was unter der Haube passiert. Es hat auch Einrichtungen für Threading und Messaging, die normalerweise für jedes Projekt benötigt werden.

+1

Wenn Sie -1 geben, sagen Sie mir zumindest warum. Bitte erklären Sie, warum Sie mir -1 für diese Antwort gegeben haben. ACE ist eine C++ - Netzwerkbibliothek, die ich empfehle. Ich denke, das ist relevant für den ersten Teil der Frage, die fragt, ob die C++ Sockets-Bibliothek der richtige Weg ist. Ich sage, dass ACE eine Alternative zur C++ Socket-Bibliothek ist. – zooropa

+2

Ich mag 1 Stimmen ohne Kommentare sehr. vor allem, wenn die Personen, in diesem Fall zooropas Bibliotheksvorschlag, etwas Nützliches anbieten. Vielleicht ist die Antwort von zooropa nicht die beste Antwort, aber sie ist konstruktiv und verdient keinen negativen Wert. Ich betrachte negativen Wert für etwas, das destruktiv ist oder keinen Wert hinzufügt. –

0

Ich würde zweite die Abstimmung für boost :: asio, da sie die Umkehrung der Steuermodell kapselt, dass die aktuelle bevorzugte Modell ist, und erscheint standard gebunden zu sein. Um zu erfahren, was die Dokumentation nicht verrät, googelt Douglas Schmidt und seine Bücher.