Протоколы Internet


Winsock (для UNIX, Windows- и -NT) - часть 11


/p>

Из этого списка можно выделить две программы WSAStartup и WSACleanup, первая вызывается в начале любой процедуры, вторая - ее завершает. wsastartup может вызываться за время сессии несколько раз, она позволяет указать версию winsock или получить информацию об ее конкретной реализации. При вызове WSAStartup осуществляется диалог с динамической библиотекой WINSOCK.DLL и настройка параметров системы. При аварийном завершении программы нужно корректно окончить работу с WINSOCK.DLL. Следует при этом помнить, что WSACleanup воздействует на все потоки завершаемого процесса (например, в случае Windows 95 или NS). Определенные проблемы может вызвать перенос программ из Unix в Windows, так как там вместо read и write используются операторы recv и send, вместо ioctl - ioctlsocket, а вместо close - closesocket. Некоторые операторы вообще непереносимы: readv, writv, recvmsg и sendmsg и части программы, где они содержатся, необходимо переписать. При обнаружении ошибки Unix присваивает переменной errno соответствующее значение. В winsock для этой цели используется символьная константа SOCKET_ERROR (равная -1), а для уточнения типа ошибки следует вызвать WSAGetLastError. В системах Windows 95 или NT этот оператор обращается к программе Win32 GetLastError, которая возвращает значение ошибки для сессии, вызвавшей эту ошибку.

Таблица 7.5. Асинхронные операторы

WSAAccept

*

Расширенная версия accept, которая позволяет условное подключение и формирование групп соединителей.

WSACloseEvent

Уничтожает объект события.

WSAConnect

*

Расширенная версия connect, которая позволяет обмениваться данными о соединении и QoS-информацией.

WSACreateEvent

Создает объект события.

WSADuplicateSocket

Создает новый дескриптор соединителя для случая использования его несколькими процессами.

WSAEnumNetworkEvents

Выявляет сетевые события.

WSAEnumProtocols

Выдает информацию о каждом доступном протоколе.

WSAEventSelect

Связывает сетевое событие с объектом события.

WSAGetOverlappedResult

Сообщает состояние выполнения совместной операции обмена.

WSAGetQOSByName

Выдает параметры qos для заданного имени сетевой услуги.

WSAHtonl

Расширенная версия htonl

WSAHtons

Расширенная версия htons

WSAIoctl

*

Версия ioctlsocket, пригодная для совмещения процедур ввода/вывода

WSAJoinLeaf

*

Подключает периферийный узел к многоточечной сессии.

WSANtohl

Расширенная версия ntohl

WSANtohs

Расширенная версия ntohs

WSARecv

*

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

WSARecvDisconnect

Завершает работу соединителя и выдает информацию о завершении, если соединитель был ориентирован на работу в связанном состоянии.

WSARecvFrom

*

Расширенная версия recvfrom, которая позволяет совмещать по времени операции ввода/вывода, использовать многобуферную схему при работе с векторами указателей и получать флаги в качестве входных и выходных параметров

WSAResetEvent

Обнуляет объект события.

WSASend

*

Расширенная версия send, которая позволяет совмещать по времени операции ввода/вывода, использовать многобуферную схему при работе с векторами указателей.

WSASendDisconnect

Инициализирует процедуру закрытия соединения и опционно посылает сообщение disconnect.

WSASendTo

*

Расширенная версия sendto, которая позволяет совмещать по времени операции ввода/вывода, использовать многобуферную схему при работе с векторами указателей.

WSASetEvent

Устанавливает объект события.

WSASocket

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

WSAWaitForMultipleEvents

Присылается, если любой или все специфицированные объекты находятся в сигнальном состоянии или когда истекает время таймаута.

<


Начало  Назад  Вперед