Подтвердить что ты не робот

Сетевое взаимодействие с С++

Я новичок в использовании С++, но имею общую идею его синтаксиса и удобства использования. Я хочу научиться общаться через сети с помощью программирования на С++, хотя я не могу найти никаких учебных пособий для С++. Кто-нибудь знает какие-либо хорошие ресурсы, чтобы узнать о сети с С++ или с чего начать?

4b9b3361

Ответ 1

Учитывая вашу новизну на С++, я бы не рекомендовал строить непосредственно на API-интерфейсах сокетов, если вы не найдете подходящей библиотеки для использования. Boost.Asio даст вам огромный начальный старт и предоставит вам абстракции более высокого уровня, используемые в сетевом программировании.

Легко начать с создания системы на основе сокетов, чтобы получить что-то, что "вроде" работает, а затем тратить недели на отладку угловых случаев, которые происходят только в условиях реального времени и нагрузки. Правильно использовать boost::asio - это, скорее всего, нелегкая прогулка, даже если она защищает разработчиков от сложностей обработки сырых сокетов.

Если цель состоит в том, чтобы научиться правильно использовать исходные сокеты (или какой-либо другой механизм транспорта, такой как RPC), то, во что бы то ни стало, сворачивайте свои собственные с помощью онлайн-образцов и документов для понимания отдельных BSD или Winsock API - если цель заключается в том, чтобы как можно быстрее решить деловую проблему с помощью высококачественного кода как на стороне бизнеса, так и на сетевой инфраструктуре, а затем использовать хорошую сетевую библиотеку. В этом случае ваш вопрос указывает на желание учиться, поэтому использование библиотеки не может быть лучшим способом достижения поставленной вами цели.

Ответ 2

Я уверен, что группа людей С++, которые презирают C-способ делать что-то, будет ненавидеть меня за это, но классический подход заключается в использовании Berkeley API-интерфейсы сокетов (так называемые, поскольку они имеют свое происхождение в BSD). Если вы ориентируетесь на Windows, "API-интерфейсы, совместимые с большинством источников, вдохновленные Unix" называются Winsock. Я бы сказал, сделайте веб-поиск сокет-учебник, и вы, вероятно, получите некоторую полезную информацию. С небольшим вниманием и, возможно, с #ifdef или двумя, не так сложно создать код, который работает на Linux, BSD, Mac (которые предоставляют сокеты BSD) и Windows (с Winsock), используя то, что является общим между этими двумя интерфейсами.

Для более склонных к С++, менее людей C-стиля или тех, кому не нравится кодировать OS API, я уверен, что там есть библиотеки С++, которые предоставляют обертки и абстракции для этих же концепций. Поскольку Boost кажется довольно популярным, я бы сказал посмотреть, что у них есть.

Ответ 4

С++ - это объектно-ориентированный язык и открытый, поэтому вы можете брать с других языков, в частности C. но вот несколько книг, которые могут помочь. http://wjyl.nuaa.edu.cn/kfyy/article/C++%20Network%20Programming%20Volume%201.pdf и, возможно, http://www.cs.wustl.edu/~schmidt/PDF/ACE-tutorial.pdf среди многих. там есть и другие.

Ответ 5

Стандартная библиотека С++ не поддерживает эту функцию, поэтому вам нужно либо использовать системный API, либо некоторую библиотеку абстракции, например. QT.