Метка «сетевое программирование»

В многопоточных приложениях иногда возникает необходимость создать producer/consumer очередь. Наилучший вариант это использовать для этого готовую библиотеку. Если по каким-то причинам этого сделать нельзя, то такую очередь можно реализовать самому. Как правило, для этого используются механизмы синхронизации mutex и condition variables.

Интерфейс синхронизации различается от среды к среде, поэтому приходится либо писать высокоуровневую обертку, либо брать за основу интерфейс какой-то среды и реализовать его для других. К примеру, можно взять за основу интерфейс pthread, и для Windows реализовать функции pthread_mutex_* и pthread_cond_*, на основе которых уже построить очередь.

Существует более легкий способ. Он заключается в том что можно создать сокет пару (socketpair) или трубу (pipe) из двух связанных дескрипторов, отдать пишущий конец трубы поставщику (producer), а читающий конец отдать всем потребителям (consumers). Читать полностью »

Аналоговое видео Глупо спорить с тем, что аналоговое видеонаблюдение уходит в прошлое: дешевые IP камеры дают картинку сопоставимого качества с дорогими аналоговыми. Помимо этого, IP камеры не ограничены сверху ничем, кроме производительности регистратора, тогда как аналоговые камеры требуют жесткого соответствия приёмной карты, согласования уровней сигнала передатчиков/усилителей/приемников и прочего шаманства.
Конструируя систему на базе IP камер в любой момент можно снять камеру и заменить на более качественную — если при этом сохранить IP адрес и логин-пароль, то, скорее всего, даже не придётся менять настройки приемника — просто в архив пойдёт более качественная картинка.
С другой стороны, это накладывает ограничения на регистратор — он должен быть готов работать с любым разрешением, любым битрейтом, любым кодеком и любым протоколом… Ну или по крайней мере, корректно работать с заявленным.

Шива В мире софта есть два пути — есть linux-way: это набор небольших программ, каждая из которых делает одну функцию, но очень хорошо; и есть windows-way: это огромные кухонные комбайны, которые умеют делать всё, и немного больше. Главная проблема linux-way — это отсутствие интерфейса. Чтобы получить всю пользу придётся скурить маны (или хотя бы прочитать --help), и поэкспериментировать. А так же сообразить, что и с чем можно скомбинировать и как. Главная проблема windows-way — это потеря основной функции. Очень быстро при обрастании доп.функционалом теряются тесты ключевого функционала, и со временем начинаются проблемы даже с ним. А еще при этом начинается инерция мышления: «это главная функция, она оттестирована сильнее всего, там бага быть не может, пользователь делает что-то не то».
Читать полностью »

«Система должна быть спроектирована так,
чтобы оставаться как можно проще
после серии внесенных в нее изменений»

Бьёрн Страуструп – программист, автор языка C++

Преамбула

В данной статье мне бы хотелось бы рассказать о довольно популярной, но так редко освещаемой на Хабре библиотеке Portable Components (сокр. POCO). Она будет полезна как разработчикам бизнес-логики программного продукта, так и в решении большинства прикладных задач. При всем изобилии кроссплатформенных библиотек для C++ всё больше людей сталкиваются с POCO лицом к лицу и не знают с чего начать. В данной статье я постараюсь описать технологии, заложенные в библиотеке и дать простейшие примеры решения некоторых задач. Также хотелось бы отметить, что за плечами библиотеки множество успешных как Open Source, так и коммерческих проектов.
Читать полностью »

Как сделать программу нетерпеливой?

Программы, которые были написаны в прошлых лекциях курса «Сетевое программирование в UNIX», обладали бесконечным запасом терпения, то есть беспрекословно ждали, пока не поступят данные для обработки. В новой лекции вы узнаете, как ограничить терпение программы определенными временными рамками.Читать полностью »

Эффективное чтение

Настало время для седьмой лекции курса «Сетевое программирование в UNIX», подготовленного специалистами SkyDNS и компании «Айдеко». Автор курса Александр Патраков объясняет студентам, как ускорить чтение небольших порций данных из сокета.Читать полностью »

Как делать несколько дел одновременно и в то же время по очереди?

Продолжаем осваивать курс «Сетевое программирование в UNIX», подготовленный специалистами SkyDNS и компании «Айдеко». Сегодня мы публикуем шестую лекцию.

В прошлый раз мы рассматривали программы, основанные на использовании конечного автомата. Теперь пойдем дальше и расскажем, как «научить» программу в автоматном стиле обрабатывать несколько одновременных соединений в одном процессе/потоке.
Читать полностью »

Программы в автоматном стиле – трудности перевода

Пятая лекция курса «Сетевое программирование в UNIX» от специалистов SkyDNS и компании «Айдеко» уже ждет своих слушателей.

Александр Патраков объясняет, как перевести обычную сетевую программу в программу, основанную на конечном автомате.

О том, что такое конечный автомат, вы узнаете под хабракатом.
Читать полностью »

О том, как читать до конца

Сегодня мы представляем вниманию читателей следующую лекцию курса «Сетевое программирование в UNIX», которую прочитали в Уральском федеральном университете (УрФУ) специалисты компаний SkyDNS и Айдеко. К сожалению, в публикациях произошел вынужденный перерыв. Надеемся, что время ожидания новой лекции вы использовали для реализации сервера и клиента, о которых рассказывали наши специалисты.
Читать полностью »

Астрологический протокол

Сегодня – очередная лекция нашего курса «Сетевое программирование в UNIX».

В ней Марк Коренберг (Компания Айдеко) рассказывает студентам об «игрушечном» астрологическом протоколе.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js