Интегрированные сети ISDN

         

Основные операторы winsock



Таблица 7.4. Основные операторы winsock



Имя оператора

Назначение

WSAAsyncGetHostByAddr

Аналог оператора gethostbyaddr

WSAAsyncGetHostByAddr

Аналог оператора gethostbyaddr

WSAAsyncGetHostByName

Аналог оператора gethostbyname

WSAAsyncGetProtoByName

Аналог оператора getprotobyname

WSAAsyncGetProtoByNumber

Аналог оператора getprotobynumber

WSAAsyncGetServByName

Аналог оператора getservbyname

WSAAsyncGetServByPort

Аналог оператора getservbyport

WSAAsyncSelect

Функциональный аналог оператора select

WSACancelAsyncRequest

Прерывает выполнение операторов типа WSAAsyncget*by*

WSACancelBlockingCall

Прерывает выполнение блокирующего оператора приложения (API)

WSACleanup

Сообщает Windows sockets о завершении работы программы с DLL

WSAGetLastError

Выдает сообщение о последней ошибке

WSAIsBlocking

Определяет, является ли Winsock DLL блокирующей

WSASetBlockingHook

Устанавливает перехват блокирующего вызова

WSASet LastError

Фиксирует тип ошибки для последующего вызова WSALastError

WSAStartup

Инициализирует следующий уровень Winsock

WSAUNhookBlockingHook

Восстанавливает прежнюю блокировку.

Из этого списка можно выделить две программы 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, которая возвращает значение ошибки для сессии, вызвавшей эту ошибку.



Содержание раздела