2.2.1. Версии Windows Sockets
2.2.1. Версии Windows Sockets
При рассмотрении функции WSAStartup уже упоминалось, что существуют разные версии библиотеки сокетов, которые заметно различаются по функциональности. К сожалению, полный перечень существующих на сегодняшний день версий Windows Sockets и их особенностей в документации в явном виде не приводится, но, изучая разрозненную информацию, можно сделать некоторые выводы, которые приведены в табл. 2.1. В дальнейшем, если не оговорено иное, под WinSock 1 мы будем подразумевать версию 1.1, под WinSock 2 — версию 2.2.
Таблица 2.1. Версии Windows Sockets
Версия Комментарий 1.0 Упоминается только вскользь. Видимо, настолько старая версия, что ее поддержка в чистом виде в современных системах отсутствует 1.1 Основная подверсия первой версии библиотеки. По умолчанию входила во все версии Windows до Windows 95 включительно. Ориентирована на 16-разрядные системы с корпоративной многозадачностью 2.0 В чистом виде никуда не ставилась. Ориентирована на 32-разрядные системы с вытесняющей многозадачностью. Исключены некоторые устаревшие функции 2.2 Основная подверсия второй версии библиотеки. По умолчанию входит в состав Windows 98/NT 4/2000 а также видимо, и более поздних версий. Для Windows 95 существует возможность обновления Windows Sockets до этой версииWinSock 1 в 16-разрядных версиях Windows реализуется библиотекой WinSock.dll, в 32-разрядных — WSock32.dll. WinSock 2 реализуется библиотекой WS2_32.dll, и. кроме того, часть функций вынесена в отдельную библиотеку MSWSock.dll. При этом для сохранения совместимости WS2_32.dll содержит даже те устаревшие функции, которые формально исключены из спецификации WinSock 2. В тех системах, в которых установлена библиотека WinSock 2, WSock32.dll не реализует самостоятельно практически ни одной функции, а просто импортирует их из WS2_32.dll и MSWSock.dll. WSock32.dll требуется только для обратной совместимости, в новых программах необходимости в этой библиотек нет.
Как это ни удивительно, но в Delphi даже 2007-й версии (не говоря уже о более ранних) отсутствует поддержка WinSock 2. Стандартный модуль WinSock импортирует функции только из WSock32.dll, поэтому программисту доступны только функции WinSock 1. Разумеется, импортировать функции WinSock 2 самостоятельно не составит труда. Более того, в Интернете можно найти уже готовые модули, импортирующие их (например, на сайте Алекса Коншина http://home.carthlink.net/~akonshin/delphi_ru.htm). Тем не менее, чтобы избежать разночтений, мы не будем использовать какой-либо готовый модуль для импорта и примем следующее соглашение: если прототип функции приведен только на Паскале, значит, эта функция есть в модуле WinSock. Если же прототип приведен и на C/C++ и на Паскале, значит, функция в WinSock не описана. В этом случае прототип функции на C/C++ берется из MSDN, а перевод на Паскаль — импровизация автора книги. В некоторых случаях возможны несколько вариантов перевода, поэтому не стоит рассматривать приведенный здесь перевод как истину в последней инстанции. Тем, кто будет самостоятельно импортировать функции из WS2_32.dll, следует помнить, что они имеют модель вызова stdcall (при описании прототипов функций мы для краткости будем опускать эту директиву).
Примечание
С Delphi поставляется библиотека Indy (Internet Direct), в состав которой входит модуль IdWinSock2, импортирующий почти все функции WinSock 2 из системных библиотек. Импорт в нем динамический, над каждой функцией сделана обертка, которая при первом вызове проверяет, была ли уже загружена функция из библиотеки, и при необходимости загружает ее. Чтобы реализовать это, имена всех функций изменены, а вызов идет через процедурные переменные, имена которых совпадают с оригинальными именами соответствующих функций.
WinSock 2 предлагает разработчику Service Provider Interface (SPI), с помощью которого можно добавлять в систему поддержку своих протоколов. Устаревшими объявлены функции, имеющие привязку к конкретным протоколам (например, уже знакомая нам функция inet_addr, которая имеет смысл только при использовании протокола IP). Добавлены новые функции, которые призваны унифицировать операции с разными протоколами. Фактически если работать с WinSock 2, то программа может быть написана так, что сможет использовать даже те протоколы, которые не существовали на момент её разработки. Кроме того, добавлена возможность связи асинхронных сокетов с событиями вместо оконных сообщений, а также поддержка перекрытого ввода-вывода (в WinSock 1 он поддерживался только в линии NT и не в полном объеме). Добавлена поддержка качества обслуживания (Quality of Service, QoS — резервирование части пропускной способности сети для нужд конкретного соединения), поддержка портов завершения, многоадресной рассылки и регистрации имен. Большинство этих нововведений требуются для пользовательских программ относительно редко (или вообще не нужны), поэтому мы не будем заострять на них внимание. Далее будут рассмотрены асинхронные сокеты (связанные как с сообщениями, так и с событиями), перекрытый ввод-вывод, методы универсализации работы с протоколами и многоадресная рассылка.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Версии Windows
Версии Windows ОС Windows, в виде развивающейся последовательности версий, используется, начиная с 1993 года. Во время написания данной книги на Web-сайте компании Microsoft в качестве основных фигурировали следующие версии:• Windows XP, включая выпуски Home, Professional и ряд других, которая
Устаревшие предыдущие версии Windows
Устаревшие предыдущие версии Windows В настоящее время продолжает использоваться ряд предыдущих версий Windows, которые считаются устаревшими и более не предлагаются или не поддерживаются компанией Microsoft, однако многие, хотя и не все, из обсуждаемых в данной книге примеров
Сравнение Berkeley Sockets и Windows Sockets
Сравнение Berkeley Sockets и Windows Sockets Программы, использующие стандартные вызовы Berkeley Sockets, будут работать и с Windows Sockets, если вы учтете следующие важные моменты:• Для инициализации Winsock DLL вы должны вызвать функцию WSAStartup.• Для закрытия сокета вы должны использовать не функцию
Перекрывающийся ввод/вывод с использованием Windows Sockets
Перекрывающийся ввод/вывод с использованием Windows Sockets В главе 14 описывается асинхронный ввод/вывод, позволяющий потоку продолжать свое выполнение в процессе выполнения операции ввода/вывода. В той же главе обсуждается и совместное использование сокетов с асинхронным
Windows Sockets 2
Windows Sockets 2 Версия Windows Sockets 2 вводит новые сферы функциональности и доступна на всех системах Windows, хотя системы Windows 9x требуют установки пакета обновления. В примерах использована версия 2.0, но можно применять и версию 1.1, если требуется совместимость с необновленными
2.1. Версии Windows Vista
2.1. Версии Windows Vista Как и предыдущие операционные системы корпорации Microsoft, Windows Vista поставляется в нескольких редакциях, которые отличаются друг от друга наличием или отсутствием тех или иных компонентов, программ или возможностей операционной системы. Как вы уже знаете,
Проверка версии Java и установка нужной версии
Проверка версии Java и установка нужной версии 1. Требования к установке I2P Перед установкой I2P необходимо проверить, какая версия Oracle Javaу Вас установлена на компьютере (рекомендуется Oracle Java 6/7).Узнать, какая версия Java установлена на Вашем компьютере можно, набрав в
4.4.3. Доменные гнезда (sockets)
4.4.3. Доменные гнезда (sockets) Гнезда - это соединения между процессами, которые позволяют им взаимодействовать, не подвергаясь влиянию других процессов. Вообще гнезда (и взаимодействие программ при помощи гнезд) играют очень важную роль во всех Unix-системах, включая и Linux: они
20.9.6 Проблемы версии 1, исправленные в версии 2
20.9.6 Проблемы версии 1, исправленные в версии 2 Следующие свойства SNMP версии 1 были не слишком удачны:? Если одна из переменных в запросе get или get-next была некорректна, то отбрасывалось все сообщение.? Если запрашивались значения нескольких переменных и агент не мог
22.5.4 Взаимодействие адресов версии 6 с сетями версии 4
22.5.4 Взаимодействие адресов версии 6 с сетями версии 4 Еще один специальный формат используется узлами версии 6, которые связываются друг с другом через промежуточные сети версии 4 (это называется туннелями IPv4). Как показано на рис. 22.1, интерфейсам на границах должны быть
Обновление предыдущей версии Windows
Обновление предыдущей версии Windows В принципе, при наличии на вашем компьютере работоспособной версии Windows предыдущего поколения вы вполне можете обойтись и без магических трюков с загрузкой с CD, и без полной переустановки системы. Просто вставьте диск с установочным
1.1. Гонки на выживание: Windows ХР, Windows Vista и Windows 7
1.1. Гонки на выживание: Windows ХР, Windows Vista и Windows 7 Время не стоит на месте, и уж тем более на месте не стоят новые технологии. Появление многоядерных процессоров, мощных видеокарт и других новых устройств, которые не могут полностью раскрыть свой потенциал в существующих
Глава 12 Версии Windows
Глава 12 Версии Windows Вот вы и прочитали значительную часть книги. Надеюсь, она вам понравилась и действительно оказалась полезной. Но перед тем, как ответить, поговорим еще о нескольких вопросах, которые не соответствуют общей теме книги, но все-таки могут быть вам
Запускаем старые версии Windows в браузере Олег Нечай
Запускаем старые версии Windows в браузере Олег Нечай Опубликовано 15 января 2014 Начало XXI века ознаменовалось невиданными по масштабам приступами ностальгии по прошедшему столетию, которые поразили даже тех, кто застал его лишь в младенческой люльке.
2.1. Версии Windows 7
2.1. Версии Windows 7 Существует шесть выпусков Windows 7, которые предназначены как для самых слабых нетбуков, так и для мощных настольных компьютеров:? Windows 7 Starter (Начальная);? Windows 7 Home Basic (Домашняя базовая);? Windows 7 Home Premium (Домашняя расширенная);? Windows 7 Professional (Профессиональная);? Windows 7
2. Установка Windows-версии OpenOffice.org
2. Установка Windows-версии OpenOffice.org Скачать OpenOffice можно с сайта разработчиков: www.openoffice.org. Сейчас мы рассмотрим особенности установки Windows-версии OpenOffice (есть еще и версия для Linux, но, сами понимаете, она нам не интересна).Запустите установочный файл. Он запросит, куда