Это очень широкий вопрос, и он во многом зависит от ваших потребностей.
Какой уровень тебе нужен? HTTP / FTP? Или "просто сокеты" для вашего собственного протокола? Какая производительность вам нужна (количество соединений, ожидаемая скорость)?
Если вы решите использовать сырой API, вам, как правило, следует избегать WSAAsyncSelect, поскольку производительность ниже «нескольких» одновременных соединений. Блокирующие сокеты и поток на сокет тоже не слишком горячие. WSAEventSelect немного сложнее, но хорошо справляется со своей задачей (µtorrent обрабатывает много одновременных соединений). Чрезвычайно высокими нагрузками были бы Fancypants - порты завершения ввода / вывода. Вы также можете посмотреть на ASIO для улучшения переносимости.
Если вы хотите использовать стандартные протоколы, такие как HTTP / FTP, проверьте libcurl. Или, для меньших потребностей и меньших накладных расходов, стандартные функции Windows WININET (хотя имеет много ограничений).
Для использования функций WinINet попробуйте запустить здесь - может быть, это не пример, но, по крайней мере, дает вам достаточно материала для поиска;)