Возможно ли программирование портативных сокетов на C / C ++? - PullRequest
1 голос
/ 22 марта 2012

Я подумываю о создании многоплатформенного портативного приложения C ++ сервер-клиент. Возможно ли это даже при использовании только стандартных библиотек? Если нет, какие еще есть библиотеки?

Есть ли какие-либо улучшения в этом направлении в C ++ 11x? Как и для потоков, теперь у нас есть std :: threads.

Чтобы сделать это более понятным ... Я хочу что-то вроде boost :: thread, который обеспечивает многоплатформенную портативную многопоточность для работы в сети.

А почему в C ++ нет библиотек (стандартных) для таких базовых вещей, как работа в сети?

Обновление : Сравнение с Python, в котором есть все (почти) встроенное ... почему не в C ++?

Ответы [ 3 ]

4 голосов
/ 22 марта 2012

Стандартной переносимой опции в C ++ 11 не существует.

Однако портативный boost :: asio - один из лучших сетевых API. Он основан на шаблоне проактора, который очень эффективен.

http://www.boost.org/doc/libs/1_49_0/doc/html/boost_asio.html

4 голосов
/ 22 марта 2012

Есть Boost Asio . Он существовал "всего лишь" небольшое количество лет ... давно у нас было ACE , но сейчас оно кажется устаревшим.

3 голосов
/ 22 марта 2012

За прошедшие годы было много попыток предоставить такую ​​кроссплатформенную библиотеку для работы в сети. Библиотека сокетов Berkeley довольно близка (и, вероятно, поставляется с вашей ОС), но все же есть различия, специфичные для платформы. Qt имеет классы сетевых сокетов, которые пытаются быть кроссплатформенными в подмножестве платформ, которые обычно поддерживает Qt. Вы, вероятно, можете найти много других.

Нет языка стандартной сетевой библиотеки для C или C ++, аналогичной std::thread.

...