Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
192 / 166 / 82
Регистрация: 01.07.2016
Сообщений: 943

C++ и сети

28.01.2020, 20:27. Показов 1022. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток! Хочу спросить совета у экспертов по сетевому программированию. Сам я начинающий в сетях, но в C++ проблем не испытываю и опыт программирования на нём имеется. Сети изучаю по курсам CISCO и программе CISCO Packet Tracer. Имею понятия об уровнях модели OSI и TCP/IP. Имею представления о протоколах и как они функционируют внутри сети.
Мой вопрос вот в чём, какую литературу посоветуете мне как начинающему сетевому программисту. Литературу наподобие K&R по C или Томаса Кормена по алгоритмам, имею ввиду чтобы было всё просто и понятно.


Цель, на ближайшие дни а может и недели это написать свой локальный чатик где люди могут передавать друг другу сообщения и не только сообщения но и файлы(например архивы или текстовые документы). Что то похожее на телеграм или вайбер но только внутри локальной сети.

Если эта цель будет достигнута то дальше планирую написать программу показывающую карту сети относительно того хоста где программа была запущена. Например приходите вы такие в офис или компанию где нужно провести кое какие работы или выявить неполадки в сети, а компания большая и компов много и имеют какую то определенную структуру, и тут вы запускаете моё приложения на любом из компов и выводится топология сети и показываются все хосты, все коммутаторы и маршутизаторы которые подключены именно к нашему хосту в том порядке в котором они подключены и в будущем иметь возможность увеличивать функционал программы. Для начала можно организовать текстовой вывод информации но в будущем можно и в графическом виде всё это показывать. Может быть я что то бредовое пишу или такое и вовсе не нужно, просто я должен был поставить для себя какую то цель и поэтому в силу моих знаний мне пришла в голову такая вот задачка
2
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.01.2020, 20:27
Ответы с готовыми решениями:

Нейронные сети. Ошибка при обработке изоброжения для транировки сети
Здравствуйте, Работа над нейросетью в срде матлаб. На моменте с работой базой данных изображений возникла проблема. Исходый код: ...

Можно ли с помощью TcpListener производить операции в сети Интернет, а не в локальной сети
Добрый день, извиняюсь за идиотский вопрос, но можно ли с помощью TcpListener производить операции в сети Интернет, а не в локальной сети?...

Как сделать редирект файла в сети на другой файл в сети
например google.com/favicon.ico браузер читал бы localhost/icon.ico

15
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
29.01.2020, 01:24
Цитата Сообщение от no swear Посмотреть сообщение
Цель, на ближайшие дни а может и недели это написать свой локальный чатик где люди могут передавать друг другу сообщения и не только сообщения но и файлы(например архивы или текстовые документы).
Делать через сокеты и не забивать себе голову какими-то там OSI. Там никакой принципиальной разницы с чтением-записью в файл/пайп. Сами сокеты подробно разобраны вот здесь.
2
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,818
29.01.2020, 03:46
Цитата Сообщение от no swear Посмотреть сообщение
Литературу наподобие K&R по C или Томаса Кормена по алгоритмам, имею ввиду чтобы было всё просто и понятно.
Классика: "UNIX: разработка сетевых приложений", - У. Ричард Стивенс
3
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
29.01.2020, 06:59
Цитата Сообщение от no swear Посмотреть сообщение
Может быть я что то бредовое пишу или такое и вовсе не нужно, просто я должен был поставить для себя какую то цель и поэтому в силу моих знаний мне пришла в голову такая вот задачка
складно мыслишь , удачи!
1
495 / 209 / 70
Регистрация: 27.05.2016
Сообщений: 557
29.01.2020, 20:28
Цитата Сообщение от DrOffset Посмотреть сообщение
Классика: "UNIX: разработка сетевых приложений", - У. Ричард Стивенс
А есть ли что кроссплатформенное по этой теме? И актуальное на сегодняшнее время?
1
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
29.01.2020, 20:39
Цитата Сообщение от notAll Посмотреть сообщение
А есть ли что кроссплатформенное по этой теме? И актуальное на сегодняшнее время?
Есть Буст, который умеет представлять сокеты в форме iostream потоков. Гугл, boost socket Iostreams. Соединение устанавливается буквально в две строчки, дальше упрощать задачу уже просто некуда.
2
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,818
29.01.2020, 21:04
Цитата Сообщение от notAll Посмотреть сообщение
А есть ли что кроссплатформенное по этой теме?
BSD сокеты, описываемые в книге, кроссплатформенные.
Тут особняком стоит только Windows, в которой какое-то свое видение на сокеты реализовано.
Поэтому тут только если какие-то высокоуровневые обертки рассматривать, вроде упомянутого выше boost, или Qt.

Цитата Сообщение от notAll Посмотреть сообщение
И актуальное на сегодняшнее время?
Книга актуальность не потеряла.
2
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
29.01.2020, 21:30
DrOffset,
Про еполл в этой книге насколько я помню нет...

В целом думаю книга актуальна, но принимать её содержание нужно без фанатизма
То есть узнали что-то, ищите нет ли улучшенных аналогов этого

Добавлено через 1 минуту
DrOffset,
Вместо этого активно продвигается медленный селект, на сколько я помню
1
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,818
29.01.2020, 22:11
Цитата Сообщение от Undisputed Посмотреть сообщение
Про еполл в этой книге насколько я помню нет...
epoll - это как раз некроссплатформенный Linux-specific инструмент.

Добавлено через 8 минут
Цитата Сообщение от Undisputed Посмотреть сообщение
Вместо этого активно продвигается медленный селект, на сколько я помню
Короче, книгу, я так понял, ты не читал

Во-первых есть разница между "продвигается" и "на примере демонстрируется принцип".
Во-вторых более быстрый и масштабируемый (и кроссплатформенный) poll там тоже вполне описан.

В-третих, epoll, как я уже сказал, это только linux и он не безусловно лучшее средство, имеет свои недостатки. Поэтому взрослые сервера предоставляют выбор между стратегиями мультиплексирования. Например: https://www.nginx.com/resource... ent-models
2
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
29.01.2020, 22:55
DrOffset,
Ну и что линукс специфик? ) оно же тоже юникс подобное
Не вижу проблем в том что бы в подобной книге говорилось о еполе

Не, я читал) только 3 года назад, до куда - не помню. Но до мультиплексоров включительно это точно
Что касается nginx, то честно говоря по той ссылке не очень понял кто там круче епола)
В основном альтернативы там доступны как я понял для того что бы охватить как можно больше платформ а не как замена еполу
1
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,818
29.01.2020, 23:05
Цитата Сообщение от Undisputed Посмотреть сообщение
Ну и что линукс специфик? ) оно же тоже юникс подобное
Обычно в учебниках по С++ не описывают расширения GCC, даже не смотря на то, что GCC есть для 99% платформ. Если ты понимаешь, о чем я.
Если ты понял как работает poll, то с epoll не будет проблем.

Цитата Сообщение от Undisputed Посмотреть сообщение
Что касается nginx, то честно говоря по той ссылке не очень понял кто там круче епола)
No comments.
1
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
29.01.2020, 23:16
DrOffset,
Да, я понял о чем ты) но по gcc можно написать целую книгу.
Поэтому наверное обычно в книгах по С++ и нет такого
Но выделить отдельную главу с описаниям платформозависимых мультиплексоров в подобной книге думаю было бы очень даже кстати

А почему ноу комментс? что я не так сказал?
1
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,818
29.01.2020, 23:28
Цитата Сообщение от Undisputed Посмотреть сообщение
А почему ноу комментс? что я не так сказал?
Потому что я писал выше:
Цитата Сообщение от DrOffset Посмотреть сообщение
взрослые сервера предоставляют выбор между стратегиями мультиплексирования.
Т.е. этот выбор, а следовательно, что "круче" и больше подходит определяет пользователь сервера, администратор, а не сам по себе инструмент. Например, при разворачивании на системе с малым количеством клиентов и небольшими ресурсами (например web-админка на роутере), epoll может быть избыточен и не давать никакого ускорения, зато при этом жрать и без того ограниченную память.
Each registered file descriptor costs roughly 90 bytes on a 32-bit kernel, and roughly 160 bytes on a 64-bit kernel.
Добавлено через 2 минуты
Т.е. это вопрос уровня что "круче" std::map или std::vector.
2
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
30.01.2020, 00:03
DrOffset,
А, я понял о чем ты. Думаю веб админка на роутере скорее исключение чем правило. В контексте nginx чаще говорят о масштабировании нежели об экономии. Вот то сообщение я писал исходя из этих соображений

Добавлено через 3 минуты
Кстати я понимаю то масштабирование тоже может быть расточительным и экономными )) но думаю ты понял о чем я
1
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,818
30.01.2020, 00:12
Undisputed, nginx - это просто пример большого продукта. В таком большом и широкоиспользуемом продукте как правило уже сделан весь анализ и продуманы все узкие места. И если авторы все равно не пришли к какому-то "наилучшему" решению, значит его и нет. Т.е. если бы все было так однозначно, то у nginx не было бы возможности выбирать такие вещи.
2
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
30.01.2020, 00:38
DrOffset,
Согласен. Наилучшее решение наверное зависит от обстоятельств.
Тем не менее, сегодня редко кто то на каком то сервере будет экономить на памяти дескрипторов.
А вот то что пользователи будут жаловаться на скорость - куда более реально.
Думаю в этом смысле еполл можно назвать самым крутым, вот это я хотел сказать...

Но мысль интересная, возьму на вооружение. Спасибо
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.01.2020, 00:38
Помогаю со студенческими работами здесь

Пропадает подключение к локальной сети и к сети интернет. Помогите пожалуйста.
Товарисчи, помогите пожалуйста! Всегда сеть работала нормально, но неожиданно появилось сообщение "Отсутствует подключение к локальной...

По заданным IP-адресу узла сети и маске определите адрес сети
В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу...

Узнать ip-адрес компьютера по сети, зная его имя в сети
Ребята подскажите, пожалуйста, по такому вопросу. Как можно узнать ip-адрес компьютера в сети зная его имя в сети, только не своего...

Расчет маски сети, деление на подсети, постройка сети.Теория
Помогите разобраться в теории деления сетей на подсети на основе данной задачи. требуется: 1) Проверить верные расчеты 2) Ответить...

Просмотр сайта: в локальной сети видно, из внешней сети нет
Добрый день. Помогите разобраться с вопросом. Имеется сервер с адресом 196.ххх.ххх.ххх. Имеется локальная сеть из нескольких компов....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Контроль корректности заполнения дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru