it-swarm.com.de

Vernetzung mit C++

Ich bin ein Neuling in der Verwendung von C++, habe aber eine allgemeine Vorstellung von Syntax und Benutzerfreundlichkeit. Ich möchte zwar lernen, wie man über C++ - Programme über Netzwerke kommuniziert, aber ich finde anscheinend keine Tutorials für C++. Weiß jemand über gute Ressourcen, um etwas über das Networking mit C++ zu lernen oder womit ich anfangen soll?

27
TopGunCoder

Angesichts Ihrer Neuheit in C++ würde ich nicht empfehlen, direkt auf den Sockets-APIs zu bauen, es sei denn, Sie finden keine geeignete Bibliothek zur Verwendung. Boost.Asio wird Ihnen einen großen Vorsprung verschaffen und Sie den Abstraktionen auf höherer Ebene aussetzen, die bei der Netzwerkprogrammierung verwendet werden.

Wenn Sie mit dem Aufbau eines Sockets-basierten Systems beginnen, ist es einfach, etwas zu bekommen, das "irgendwie" funktioniert, und dann Wochen damit zu verbringen, Eckfälle zu debuggen, die nur unter realen Timing- und Lastbedingungen auftreten. Die korrekte Verwendung von boost::asio ist kaum ein Wermutstropfen, auch wenn Entwickler Entwickler vor der Komplexität der Handhabung von Rohsteckdosen schützen. 

Wenn das Ziel darin besteht, die korrekte Verwendung von Raw-Sockets (oder eines anderen Transportmechanismus, z. B. RPC), zu erlernen, sollten Sie unbedingt eigene Online-Beispiele und -Dokumente verwenden, um die einzelnen BSD- oder Winsock-APIs zu verstehen ein Geschäftsproblem so schnell wie möglich mit qualitativ hochwertigem Code sowohl auf der Business- als auch auf der Netzwerkinfrastrukturseite, und dann eine gute Netzwerkbibliothek verwenden. In diesem Fall weist Ihre Frage auf den Wunsch zu lernen hin, so dass die Verwendung einer Bibliothek möglicherweise nicht der beste Weg ist, um Ihr erklärtes Ziel zu erreichen.

26
Steve Townsend

Sie sollten diese Leitfäden über folgendes lesen:

Und Boost.Asio Schauen Sie here nach einer Frage zur Dokumentation von Boost.Asio

9
user225312

Ich bin mir sicher, dass mich ein paar C++ - Leute, die die C-Methode verachten, haßt, aber der klassische Ansatz ist die Verwendung der Berkeley-Socket-APIs (so genannt, weil sie ihren Ursprung haben BSD). Wenn Sie auf Windows abzielen, heißen die APIs "weitgehend quellkompatibel, von Unix inspiriert" Winsock . Ich würde sagen, führen Sie eine Websuche nach Socket-Tutorial durch, und Sie werden wahrscheinlich nützliche Informationen erhalten. Mit ein wenig Sorgfalt und vielleicht ein oder zwei #ifdef ist es nicht so schwer, Code zu erstellen, der unter Linux, BSD, Mac (der BSD-Sockets bereitstellt) und Windows (mit Winsock) unter Verwendung der zwischen diesen beiden Schnittstellen üblichen Eigenschaften funktioniert.

Ich bin mir sicher, dass es C++ - Bibliotheken gibt, die Wrapper und Abstraktionen für dieselben Konzepte bereitstellen. Da Boost ziemlich beliebt zu sein scheint, würde ich sehen, was sie haben sagen.

7
asveikau

Die Standardbibliothek von C++ unterstützt dies nicht. Sie müssen entweder die System-API oder eine Abstraktionsbibliothek verwenden, z. QT.

1
fschmitt

C++ ist eine objektorientierte Sprache und ist offen, so dass Sie sich von anderen Sprachen leihen können, insbesondere von C. Aber hier sind ein paar Bücher, die helfen könnten. http://wjyl.nuaa.edu.cn/kfyy/article/C++%20Network%20Programmierung%20Volume%201.pdf und möglicherweise http://www.cs.wustl.edu/~schmidt/ PDF/ACE-Tutorial.pdf unter vielen. da draußen auch andere. 

1
Olupot Douglas
0
bmeric

Vielleicht ist Boost.Asio oder dieses (Unicomm) basierend darauf für Sie geeignet

0
4xy