Не так давно передо мной встала задача: написать кроссплатформенный сервер для обработки запросов по протоколу ssl. До этого я писал сервера для обычных, не шифрованных протоколов, но с ssl столкнулся впервые.
Беглый обзор интернета показал, что лучшим решением будет не велосипедостроение, а использование библиотеки OpenSSL.
В этой статье я не хочу рассматривать процесс установки OpenSSL на Linux и Windows, замечу лишь, что для Windows процесс этот оказался нетривиальным. А рассказать я хочу о том, как мне удалось скомпилировать в Visual Studio пример простейшего сервера, входящий в состав исходников OpenSSL.
Неискушенному читателю может показаться: «что тут особенного — создал проект, включил в него готовый исходник, запустил»… Однако обо всем по порядку.
Метка «С++» - 2
Простейший кросcплатформенный сервер с поддержкой ssl
2014-02-05 в 11:12, admin, рубрики: c++, linux, openssl, Visual Studio, windows, кроссплатформенная разработка, Программирование, С++, сервер, метки: linux, openssl, windows, кроссплатформенная разработка, С++, серверРезультаты конкурса на самый глючный код C++
2014-01-27 в 15:19, admin, рубрики: c++, ненормальное программирование, С++, метки: С++После продолжительного обсуждения объявлены победители конкурса Grand C++ Error Explosion Competition. Награды должны были объявить в двух номинациях. Участники первой соревновались по максимальному количеству ошибок на минимальный объём кода. Вторая номинация — творческая, там важно не количество и размер, а качество и красота глюков.
В итоге, абсолютным победителем назван программист Эд Хэнвей (Ed Hanway), приславший такую программу.
#include ".//.//.//.//jeh.cpp"
#include "jeh.cpp"
`
Хотите получить представление о том, как устроен boost::function, boost::any “под капотом”? Узнать или освежить в памяти, что скрывается за непонятной фразой “стирание типа”? В этой статье я постараюсь кратко изложить мотивацию, стоящую за этой идиомой и ключевые элементы реализации.
Читать полностью »
Табличные вычисления
2013-12-23 в 9:07, admin, рубрики: c++, быстродействие, криптография, массивы, С++, таблицы, теги никто не читает, метки: быстродействие, криптография, массивы, С++, таблицы, теги никто не читаетВступление
Сегодня все больше людей занимаются программированием. Новички, которые клепают тонны «красивого» кода на Java, или языках высокого уровня, или главные архитекторы приложений, у которых все строится красиво по паттернам и максимально применяя рефакторинг, или простые «средненькие» программисты который выполняют задания – все гонятся за ресурсами вычислительной техники.
Читать полностью »
Объектный пул и быстрое создание объектов в куче
2013-12-09 в 17:55, admin, рубрики: c++, stl, велосипеды, ооп, паттерны проектирования, С++, с++11, метки: stl, велосипеды, паттерны проектирования, С++, с++11 Хочу поделится очередным велосипедом собственной сборки на С++. Велосипед умеет быстро создавать и выдавать объекты. В результате получаем скорость создания (не отдачи) объектов на 30% быстрее чем просто с new. Объектный пул — вещь не новая, и в общем — чего о нем и говорить то. Но как говорится — главное в деталях.
Читать полностью »
Программа CassandraConf.ru
2013-12-03 в 12:01, admin, рубрики: cassandra, nosql, Администрирование баз данных, базы данных, Блог компании IT-People, конференция, метки: cassandra, nosql, базы данных, конференция, С++ Расписание и тезисы докладов готовы и доступны на сайте CassandraConf.ru. Итак, что нас ждет 9 декабря:
«Boost.Asio C++ Network Programming». Глава 6: – другие особенности
2013-10-09 в 6:09, admin, рубрики: api, c++, Программирование, С++, метки: api, Программирование, С++ Всем привет!
Продолжаю перевод книги John Torjo «Boost.Asio C++ Network Programming».
Содержание:
- Глава 1: Приступая к работе с Boost.Asio
- Глава 2: Основы Boost.Asio
- Глава 3: Echo Сервер/Клиент
- Глава 4: Клиент и Сервер
- Глава 5: Синхронное против асинхронного
- Глава 6: Boost.Asio – другие особенности
- Глава 7: Boost.Asio – дополнительные темы
В этой главе мы рассмотрим некоторые из не очень известных особенностей Boost.Asio. Объекты std streams и streambuf иногда немного сложнее в использовании, но, как вы сами убедитесь, у них есть свои преимущества. Наконец, вы увидите довольно позднее добавление в Boost.Asio — co-routines, которое позволит вам иметь асинхронный код, но легко читаемый (как буд-то бы он синхронный). Это довольно удивительная особенность.
WTF?
2013-10-01 в 7:36, admin, рубрики: c++, code review, open source, pvs-studio, wtf, Блог компании PVS-Studio, обзор кода, ошибки в программе, Программирование, С++, метки: code review, open source, pvs-studio, wtf, обзор кода, ошибки в программе, С++, Си
Меня не покидает когнитивный диссонанс. На форумах обсуждаются возвышенные идеи о написании сверх надежных классов, кто-то рассказывает, что его проект собирается с ключами -Wall -Wextra -pedantic -Weffc++. Господи, где все эти достижения науки и техники? Почему я вижу кругом глупейшие ошибки? Может быть, со мной что-то не так?
«Boost.Asio C++ Network Programming». Глава 4: Клиент и Сервер
2013-09-30 в 11:07, admin, рубрики: api, c++, перевод, переводы, С++, метки: перевод, С++ Всем привет!
Продолжаю перевод книги John Torjo «Boost.Asio C++ Network Programming».
Содержание:
- Глава 1: Приступая к работе с Boost.Asio
- Глава 2: Основы Boost.Asio
- Глава 3: Echo Сервер/Клиент
- Глава 4: Клиент и Сервер
- Глава 5: Синхронное против асинхронного
- Глава 6: Boost.Asio – другие особенности
- Глава 7: Boost.Asio – дополнительные темы
В этой главе мы собираемся углубиться в создание нетривиальных клиент/серверных приложений с использованием Boost.Asio. Вы можете запускать и тестировать их, и как только вы разберетесь в них, вы сможете использовать их как основу для создания собственных приложений.
«Boost.Asio C++ Network Programming». Глава 3: Эхо сервер/клиент
2013-09-26 в 12:54, admin, рубрики: api, c++, перевод, переводы, С++, метки: api, перевод, С++ Всем привет!
Продолжаю перевод книги John Torjo «Boost.Asio C++ Network Programming».
Содержание:
- Глава 1: Приступая к работе с Boost.Asio
- Глава 2: Основы Boost.Asio
- Глава 3: Echo Сервер/Клиент
- Глава 4: Клиент и Сервер
- Глава 5: Синхронное против асинхронного
- Глава 6: Boost.Asio – другие особенности
- Глава 7: Boost.Asio – дополнительные темы
В этой главе мы реализуем небольшое клиент/серверное приложение, которое, вероятно, будет самым простым клиент/серверным приложением. Это приложение эхо-сервер, который возвращает клиенту то, что тот ему написал, а затем закрывает соединение клиента. Сервер может работать с любым числом клиентов. Когда подключается новый клиент, он шлет сообщение. Сервер получает сообщение целиком и посылает его обратно. После этого он закрывает соединение.
Таким образом, каждый эхо-клиент подключается к серверу, посылает сообщение и читает то, что ответил сервер, убедившись, что это то же сообщение, которое он послал, заканчивает общение с сервером.
Сначала мы будем реализовывать синхронное приложение, а затем асинхронное, так что вы можете легко их сравнить:
Здесь будет приводиться не весь код целиком, а только его части, весь код можно посмотреть по ссылке в конце статьи.
Читать полностью »