Имя Пароль
Зарегистрироваться


* При перепечатке материалов ссылка на www.SeoLiga.ru обязательна! RSS



Версии Windows Sockets
19 марта 2009

В предыдущей статье при рассмотрении функции WSAStartup уже упоминалось, что существуют разные версии библиотеки сокетов, которые заметно различаются по функциональности. К сожалению, полного перечня существующих на сегодняшний день версий 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 мы будем подразумевать версию 1.1, под WinSock 2 - версию 2.2.
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 даже 7-ой версии отсутствует поддержка WinSock 2. Стандартный модуль WinSock импортирует только функции из WSock32.dll, поэтому программисту доступны только функции WinSock 1. Разумеется, импортировать функции WinSock 2 самостоятельно не составит труда. Более того, в интернете можно найти уже готовые модули, импортирующие их (например, на сайте Алекса Коншина). Тем не менее, чтобы избежать разночтений, мы не будем использовать какой-либо готовый модуль для импорта и примем в этой статье следующее соглашение: если прототип функции приведён только на Паскале, значит, эта функция есть в модуле WinSock. Если же прототип приведён и на C/С++, и на Паскале, значит, функция в WinSock не описана. В этом случае прототип функции на С/С++ берётся из MSDN'а, а перевод на Паскаль - мой вариант. В некоторых случаях возможны несколько вариантов перевода, поэтому не стоит рассматривать мой вариант как истину в последней инстанции. Тем, кто будет самостоятельно импортировать функции из WS2_32.dll, следует помнить, что они имеют модель вызова stdcall (при описании прототипов функций я для краткости буду опускать эту директиву).
WinSock 2 предлагает разработчику Service Provider Interface (SPI), с помощью которого можно добавлять в систему поддержку своих протоколов. Устаревшими объявлены функции, имеющие привязку к конкретным протоколам (например, уже знакомая нам функция Inet_Addr, которая имеет смысл только при использовании протокола IP). Добавлены новые функции, которые призваны унифицировать операции с разными протоколами. Фактически, если использовать WinSock 2, программа может быть написана так, что сможет использовать даже те протоколы, которые не существовали на момент её разработки. Кроме того, добавлена возможность связи асинхронных сокетов с событиями вместо оконных сообщений, а также поддержка перекрытого ввода-вывода (в WinSock 1 он поддерживался только в линии NT и не в полном объёме). Добавлена поддержка качества обслуживания (Quality of Service, QoS - резервирование части пропускной способности сети для нужд конкретного соединения), поддержка портов завершения, поддержка многоадресной рассылки, поддержка регистрации имён. Большая часть этих нововведений требуются для пользовательских программ относительно редко (или вообще не требуются), поэтому мы не будем заострять на них внимания. В статье будут рассмотрены асинхронные сокеты (связанные как с сообщениями, так и с событиями), перекрытый ввод-вывод, методы универсализации работы с протоколами и многоадресная рассылка.


Теги: asus socket, IP, borland delphi, User Datagram Protocol, Unix, SQL-сервер Borland Delphi

Статьи по теме:

Методы передачи данных в сетях ЭВМ
Компонент TButton
Интеграция OLAP и ИАД
Разметка, единицы измерения и масштаб
Основные принципы создания пользовательского интерфейса
OpenMode
Панель Position
Свойство Zoom
Протокол TCP
Групповые и корпоративные информационные системы
Использование сокетов в Delphi
Свойство ChildBand
Свойство PaperSize
MMX и SSE2
CheckDbfFieldDefs
| Borland Delphi | Alex |
 


Пн Вт Ср Чт Пт Сб Вс
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31


     



Rambler's Top100

Данный сайт или домен продается ICQ: 403-353-727

© 2009 Seoliga.ru | Borland Delphi | Версии Windows Sockets. Регион сайта: Москва и Санкт-Петербург