Подтвердить что ты не робот

WinSock.h & WinSock2.h который использовать?

Кто-нибудь знает различия между WinSock.h и WinSock2.h. Я знаю, что они не используют одну и ту же библиотеку (.lib), но я не знаю, добавляет ли WinSock2 новые функции или улучшает функции WinSock 1. Я работаю с сокетами IP/TCP и хочу управлять таймаутами с помощью select(). Я также использую несколько потоков для одновременного управления несколькими клиентами. Должен ли я продолжать использовать WinSock 1.1 или я должен перейти на WinSock 2? Заранее спасибо.

4b9b3361

Ответ 1

Вероятно, вы должны использовать winsock2.h.

Несколько точек:

  • winsock.h следует использовать с wsock32.lib, а winsock2.h следует использовать с ws2_32.lib
  • winsock.h и winsock2.h не должны быть вместе в одном проекте, winsock2.h заменяет winsock.h и не расширяет его.
  • winsock.h следует использовать только в том случае, если вы нацеливаете старую версию Windows, например Windows 95/Windows NT 3.5.

Реализации Microsoft

Версия 1.1 (winsock.h) Winsock была предоставлена ​​в дополнительном пакете (называемом Wolverine) для Windows для рабочих групп (код Snowball). Это был неотъемлемый компонент Windows 95 и Windows NT от версий 3.5 и далее (исходная коммерчески доступная версия Windows NT, версия 3.1, включала только проприетарную и довольно неполную реализацию TCP/IP на основе AT & T UNIX System V API "Потоки".

Версия 2.1 (winsock2.h) Winsock была предоставлена ​​в дополнительном пакете для Windows 95. Он был неотъемлемым компонентом Windows 98, Windows NT 4.0 и всех последующих выпусков Windows. Последние версии Winsock 2.x были доставлены с новыми версиями Windows или как часть пакетов обновления.

Добавляет ли Winsock2 функции?

Winsock 2 расширяется с помощью механизма, известного как Layered Service Provider (LSP). Winsock LSP доступны для широкого круга полезных целей, включая родительский контроль в Интернете, фильтрацию веб-контента, QoS и т.д.

Ответ 2

Winsock.h должен содержать компиляцию кода, которая началась в 16-разрядной версии Windows. Вы всегда должны использовать Winsock2.h и ссылку на ws2_32.lib в новых проектах.