Телекоммуникационные технологии. Том 1



         

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


/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Присылается, если любой или все специфицированные объекты находятся в сигнальном состоянии или когда истекает время таймаута.
<


Содержание  Назад  Вперед