Я новичок в использовании C++, но у вас есть общая идея его синтаксиса и удобства использования. Я хочу научиться общаться через сети с помощью программирования на C++, хотя я не могу найти никаких учебных пособий для C++. Кто-нибудь знает какие-либо хорошие ресурсы, чтобы узнать о сети с C++ или с чего начать?Взаимодействие с C++
ответ
Учитывая вашу новизне на C++, я бы не рекомендовал строить напрямую на API сокетов, если вы не можете не найти подходящую библиотеку для использования. Boost.Asio даст вам огромное начало и выведет вас на абстракции более высокого уровня, используемые в сетевом программировании.
Легко начать с создания системы сокетов, чтобы получить что-то, что «вроде» работает, а затем проводить недели, отлаживая угловые случаи, которые происходят только в условиях реального времени и нагрузки. Правильно использовать boost::asio
- это, скорее всего, нелегкая прогулка, даже если она защищает разработчиков от сложностей обработки сырых сокетов.
Если цель состоит в том, чтобы научиться правильно использовать сырые сокеты (или какой-либо другой механизм транспорта, такой как RPC), то, во что бы то ни стало, сворачивайте свои собственные онлайн-образцы и документы, чтобы понять отдельные BSD или Winsock API - если Цель состоит в том, чтобы как можно быстрее решить бизнес-задачу с помощью высококачественного кода как на стороне бизнеса, так и на сетевой инфраструктуре, а затем использовать хорошую сетевую библиотеку. В этом случае ваш вопрос указывает на желание учиться, поэтому использование библиотеки не может быть лучшим способом достижения поставленной вами цели.
Почему-то моя группа выступает против идеи использования boost.asio, знаете ли вы, почему это может быть? Кажется, что это правильный способ приблизиться к такой вещи: S – TopGunCoder
Проблема с вашими рассуждениями (новые люди -> API-интерфейсы сокетов слишком продвинуты) заключается в том, что ... ну .. с этим отношением, как вы можете ожидать, что он учится? Иногда вам приходится заставлять себя мешать в вещах выше вашего уровня комфорта. Подход «найти библиотеку, чтобы делать все», особенно в такой простой теме, вносит свой вклад в проблему, когда так мало людей, которые могут реализовать эти библиотеки в первую очередь. – asveikau
@asveikau - пункт снят, см. Редактирование. –
В стандартной библиотеке C++ нет поддержки для этого, поэтому вам нужно либо использовать системный API, либо некоторую библиотеку абстракции, например. QT.
Я уверен, что куча людей C++, которые презирают способ выполнения вещей, ненавидят меня за это, но классический подход заключается в использовании Berkeley socket APIs (так называемый, поскольку они имеют свое происхождение в BSD). Если вы ориентируетесь на Windows, API-интерфейсы, совместимые с большинством источников, вдохновленные Unix, называются Winsock. Я бы сказал, сделайте поиск в Интернете для socket tutorial, и вы, вероятно, получите полезную информацию. С небольшим вниманием и, возможно, с #ifdef
или двумя, создавать код, который работает на Linux, BSD, Mac (которые предоставляют сокеты BSD) и Windows (с Winsock), не так сложно, используя то, что является общим между этими двумя интерфейсами.
Для более склонных C++ людей, не относящихся к C-стилю, или тех, кому не нравится кодировать OS API, я уверен, что там есть библиотеки C++, которые предоставляют обертки и абстракции для этих же концепций. Поскольку Boost кажется довольно популярным, я бы сказал, see what they have.
Вы должны проверить эти руководства о:
И Boost.Asiohere Посмотрите на вопрос о документации, связанной с Boost.Asio
C++ является объектно-ориентированным языком и открытым, так что вы можете заимствовать из других языков, в частности, С. но вот несколько книг, которые могли бы помочь , http://wjyl.nuaa.edu.cn/kfyy/article/C++%20Network%20Programming%20Volume%201.pdf и возможно http://www.cs.wustl.edu/~schmidt/PDF/ACE-tutorial.pdf среди много. там есть и другие.
Возможно Boost.Asio или this one (Unicomm) на его основе будут пригодны для вас
- 1. Взаимодействие python с C++
- 2. Взаимодействие с C
- 3. Взаимодействие с препроцессором C++
- 4. Взаимодействие октавы с C#
- 5. C# - взаимодействие с Java
- 6. Взаимодействие с HID-устройством с C#/C++?
- 7. Взаимодействие с новыми функциями C#
- 8. Взаимодействие с встроенным C++-классом
- 9. Взаимодействие с Facebook C# SDK
- 10. Взаимодействие c C# struct sequence
- 11. взаимодействие интерфейса в C
- 12. C# treeview datagridiew взаимодействие
- 13. Взаимодействие java и C++
- 14. Поперечное взаимодействие C#
- 15. Взаимодействие C# и C++ (.net)
- 16. Заголовок C++ Взаимодействие
- 17. Взаимодействие с службами Reporting Services с C#
- 18. Взаимодействие с java-кодом с C#
- 19. Взаимодействие с оболочкой с помощью C
- 20. Взаимодействие Fortran и c
- 21. qt5 QML C++ взаимодействие
- 22. Странное взаимодействие с указателями в C
- 23. Взаимодействие с сервлетами из кода C++
- 24. NSIS Взаимодействие с C# или VB?
- 25. Взаимодействие C++ и Python с использованием SWIG
- 26. Взаимодействие с классами C++ в Emscripten
- 27. Взаимодействие с терминальным приложением Java или C++
- 28. Отвечая на взаимодействие с файлами в C#?
- 29. Взаимодействие с веб-страницами в C#
- 30. Взаимодействие с классами C++ из Swift
Я дал обширный ответ на socketprogramming в C++ [здесь] (http://stackoverflow.com/questions/2843277/c-winsock-p2p/ 2920787 # 2920787). Надежда, которая может помочь – Default