C/C++ Network Library (за и против)
От: dosik Россия www.dosik.ru
Дата: 18.05.16 08:07
Оценка:
Подскажите, я один такой, кто до сих пор использует чистые сокеты без всякой обертки типа asio, ACE, poco, libevent и т.п.
И при этом умудряюсь писать на нем примитивные HTTP, DHCP, TFTP серверы. И они даже работают )))
Или все же стоит обратить внимание на одну из библиотек? Если да, то какую по рекомендуете?
Re: C/C++ Network Library (за и против)
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 18.05.16 08:24
Оценка: +2
Я давно на boost::asio перешёл.
Re[2]: C/C++ Network Library (за и против)
От: dosik Россия www.dosik.ru
Дата: 18.05.16 08:49
Оценка:
Здравствуйте, Nuzhny, Вы писали:

N>Я давно на boost::asio перешёл.


Вроде как если не хочешь с собой тащить весь boost, можно asio отдельно юзать.
Ну и вроде как где-то я читал, что в следующих стандартах (С++14, С++17, ...) ее может постигнуть судьба boost::thread, т.е. может стать std::asio.
Re: C/C++ Network Library (за и против)
От: VTT http://vtt.to
Дата: 18.05.16 10:04
Оценка: 1 (1) +1
Даже на С использовать сокеты напрямую — это откровенная перверсия.
Но и с использованием сторонних библиотек тоже все не так просто.
Обычно проблема заключается в их крайне низкой гранулированности.
Вместо нескольких отдельных библиотек, реализующих обертки над системными API, и некоторой высокоуровневой библиотеки, предлагающей стандартный набор операций (доступный на всех платформах), обычно предлагают франкенштейна, где все это намешано где-то в потрохах.
Говорить дальше не было нужды. Как и все космонавты, капитан Нортон не испытывал особого доверия к явлениям, внешне слишком заманчивым.
Re[2]: C/C++ Network Library (за и против)
От: dosik Россия www.dosik.ru
Дата: 18.05.16 10:31
Оценка: +1
Здравствуйте, VTT, Вы писали:

VTT>Даже на С использовать сокеты напрямую — это откровенная перверсия.

VTT>Но и с использованием сторонних библиотек тоже все не так просто.

Мысль то не закончили )))
Re[3]: C/C++ Network Library (за и против)
От: VTT http://vtt.to
Дата: 18.05.16 11:42
Оценка:
D>Мысль то не закончили )))

закончил, там же дальше текст идет
Говорить дальше не было нужды. Как и все космонавты, капитан Нортон не испытывал особого доверия к явлениям, внешне слишком заманчивым.
Re: C/C++ Network Library (за и против)
От: vsb Казахстан  
Дата: 18.05.16 12:44
Оценка:
Здравствуйте, dosik, Вы писали:

D>Подскажите, я один такой, кто до сих пор использует чистые сокеты без всякой обертки типа asio, ACE, poco, libevent и т.п.

D>И при этом умудряюсь писать на нем примитивные HTTP, DHCP, TFTP серверы. И они даже работают )))
D>Или все же стоит обратить внимание на одну из библиотек? Если да, то какую по рекомендуете?

А как ты работаешь с несколькими соединениями? Если пускаешь отдельный поток на каждое соединение, это очень неэффективно. Если пишешь руками асинхронный код, на мой взгляд там много неинтересного кода, в котором можно ошибиться. К тому же этот код очень критичен к уязвимостям, всякие buffer overflow и тд.
Re[2]: C/C++ Network Library (за и против)
От: dosik Россия www.dosik.ru
Дата: 18.05.16 13:43
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>А как ты работаешь с несколькими соединениями? Если пускаешь отдельный поток на каждое соединение, это очень неэффективно.

Зачем, отдельный поток на select/epool а при срабатывании в зависимости от приложения:
— в случае высокой нагруженности или высокой длительности обработки запоса задачу в очередь для заранее запущенного пула потоков;
— если время терпит и обработка запроса не долгая, могу прямо внутри цикла обработать;

vsb>Если пишешь руками асинхронный код, на мой взгляд там много неинтересного кода, в котором можно ошибиться. К тому же этот код очень критичен к уязвимостям, всякие buffer overflow и тд.

Вот по именно по этой причине, а именно с появлением очередной задачи и пониманием, что придется много копипастить и родилась эта ветка.

Пока для себя решил все свои наработки объединить в свою либу, попробовать родить своего asio-клона, время терпит, пару дней убью, посмотрю.
Re[3]: C/C++ Network Library (за и против)
От: PM  
Дата: 18.05.16 13:57
Оценка: 4 (1)
Здравствуйте, dosik, Вы писали:

vsb>>Если пишешь руками асинхронный код, на мой взгляд там много неинтересного кода, в котором можно ошибиться. К тому же этот код очень критичен к уязвимостям, всякие buffer overflow и тд.

D>Вот по именно по этой причине, а именно с появлением очередной задачи и пониманием, что придется много копипастить и родилась эта ветка.

D>Пока для себя решил все свои наработки объединить в свою либу, попробовать родить своего asio-клона, время терпит, пару дней убью, посмотрю.


Клон asio за 2 дня Начните лучше с чтения http://www.crazygaze.com/blog/2016/03/04/boost-asio-thread-safety-and-reinventing-the-wheel/

Если вам не нужен Boost, есть Asio standalone которая использует стандартную библиотеку C++11
Re[4]: C/C++ Network Library (за и против)
От: dosik Россия www.dosik.ru
Дата: 18.05.16 14:26
Оценка:
Здравствуйте, PM, Вы писали:

PM>Клон asio за 2 дня Начните лучше с чтения http://www.crazygaze.com/blog/2016/03/04/boost-asio-thread-safety-and-reinventing-the-wheel/

А весь asio ни кто и не собирается клонировать, там помимо сокетов и требуемого мне функционала еще куча "ненужных" примочек.
Исхожу их потребностей.
Re: C/C++ Network Library (за и против)
От: Gomes Россия http://irazin.ru
Дата: 05.09.16 11:57
Оценка:
Здравствуйте, dosik, Вы писали:

D>Или все же стоит обратить внимание на одну из библиотек? Если да, то какую по рекомендуете?


Винда? Линух?
Re[2]: C/C++ Network Library (за и против)
От: dosik Россия www.dosik.ru
Дата: 07.09.16 09:09
Оценка:
Здравствуйте, Gomes, Вы писали:

G>Здравствуйте, dosik, Вы писали:


D>>Или все же стоит обратить внимание на одну из библиотек? Если да, то какую по рекомендуете?


G>Винда? Линух?


Кросплатформенно, в том числе macOS. Да уже свою написал и успешно юзаю )))
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.