Сетевое программирование с помощью Windows Sockets — КиберПедия 

История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...

Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...

Сетевое программирование с помощью Windows Sockets

2019-09-17 151
Сетевое программирование с помощью Windows Sockets 0.00 из 5.00 0 оценок
Заказать работу

Интерфейс прикладного программирования Windows Sockets (Winsock)

Windows Sockets (Winsock) – это сетевой интерфейс прикладного программирования, а не протокол, основной интерфейс доступа к различным сетевым базовым протоколам, реализованный на всех платформах. Winsock многое унаследовал от реализации BSD Sockets, но также включает Microsoft-specific расширения, постоянно продолжая развиваться и расширяться. Winsock поддерживает надежное, ориентированное на соединение, а также ненадежное, не ориентированное на соединение взаимодействия. Windows 2000 включает Winsock 2.2, который доступен для потребительских версий в виде надстройки.

Winsock обеспечивает:

1. Поддержку по механизму scatter-gather и ассинхронный ввод-вывод I/O;

2. Поддержку Quality of service (QoS) если нижележащая сеть поддерживает QoS, приложения могут согласовывать между собой максимальные задержки и полосы пропускания;

3. Расширяемость - Winsock можно использовать не только с протоколами, поддерживаемыми Windows 2000, но и с другими;

4. Поддержку интегрированных пространств имен, отличных от определенных протоколом, который использует приложение вместе с Winsock. Например, сервер может опубликовать свое имя в Active Directory, а клиент, используя расширения пространства имен найти адрес сервера в Active Directory;

5. Поддержку многоадресных сообщений, передаваемых сразу нескольким адресатам.

Функционирование Winsock

    Для создания Winsock-приложения необходимо создать сокет, являющийся конечной точкой коммуникационного соединения. Сокет необходимо привязать к адресу конкретного локального компьютера. Поскольку сокет не зависит от протокола, можно выбрать любой протокол, установленный в системе, где работает сокет. Далее схемы работы различных типов сокетов отличаются. Winsock-сервер, ориентированный на логическое соединение, выполняет на сокете операцию listen, указывая число поддерживаемых соединений. Далее выполняется операция accept, которая при наличии ждущего запроса на соединение завершается немедленно, в противном случае после поступления запроса. После установления соединения accept возвращает новый сокет с серверной стороны. Сервер может выполнять операции передачи и приема данных.

   

Рис. 3. Коммуникационная связь между клиентом и сервером Winsock, ориентированными на логическое соединение

 

Клиенты подключаются к серверу с помощью вызова функции connect с указанием адреса удаленного компьютера. После установления соединения клиент может принимать и посылать сообщения через свой сокет. На рис. 3 представлена коммуникационная связь между клиентом и сервером, ориентированными на логическое соединение.

После привязки к адресу сервер, не требующий логических соединений, ничем не отличается от аналогичного клиента. Сервер посылает и получает сообщение через сокет, просто указывая требуемый адрес. Отправитель получает код ошибки в ходе следующей операции приема, если предыдущее сообщение не было доставлено.

Реализация Winsock

Прикладной интерфейс Windows Sockets состоит из DLL Ws2_32.dll, которая обеспечивает приложениям доступ к Winsock-функциям (рис. 4). Ws2_32.dll вызывает сервисы пространства имен и провайдеров сервисов транспорта для выполнения операций по разрешению имен и передачи сообщений. Библиотека Msafd.dll действует как провайдер сервисов транспорта. Msafd.dll использует библиотеки-помощники для Winsock (которые являются специфичными для протоколов), для взаимодействия с драйверами протоколов уровня ядра. Например, Wshtcpip.dll является помощником для протокола TCP/IP, а Wshnetbs.dll - для протокола NetBEUI. Библиотека Mswsock.dll реализует расширенную функциональность Microsoft Winsock.

Провайдер сетевого транспорта Msafddll использует сервисы драйвера файловой системы AFD.sys (Ancillary Function driver, AFD) для реализации функций сокетов. AFD является TDI-клиентом и исполняет сетевые операции с сокетами, такие как посылка и получение сообщений путем отправки запросов TDI IRP драйверам протоколов. AFD не запрограммирован для использования определенных драйверов протоколов, поэтому Msafd.dll информирует AFD об имени протокола, используемого определенным сокетом так, чтобы AFD мог открыть объект-устройство, представляющее этот протокол.

 

Рис. 4. Интерфейс WinSockets


Поделиться с друзьями:

Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...

Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначен­ные для поддерживания проводов на необходимой высоте над землей, водой...

Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.01 с.