Сетевые технологии. Учебное пособие. Баканов В.М. - 44 стр.

UptoLike

Составители: 

44
ко над последним не определены некоторые (физически недопустимые для
сокета) операции (например, позиционирование указателя в потоке). Если же
произошла ошибка, функция s
ocket
возвращает значение
INVALID_SOCKET
.
Для анализа причины ошибки следует вызвать функцию
WSAGetLastError
, ко-
торая в данном случае может вернуть один из следующих кодов ошибки
Код ошибки Описание
WSANOTINITIALISED Интерфейс Windows Sockets не был проинициализиро-
ван функцией WSAStartup
WSAENETDOWD
Сбой сетевого программного обеспечения
WSAEAFNOSUPPORT
Указан неправильный тип адреса
WSAEINPROGRESS
Выполняется блокирующая функция интерфейса
Windows Sockets
WSAEMFILE
Израсходован весь запас свободных дескрипторов
WSAENOBUFS
Нет памяти для создания буферов
WSAEPROTONOSUPPORT
Указан неправильный протокол
WSAEPROTOTYPE
Указанный протокол несовместим с данным типом соке-
та
WSAESOCKNOSUPPORT
Указанный тип сокета несовместим с данным типом ад-
реса
Ниже приведен фрагмент кода, в котором создается сокет для передачи
данных с использование протокола TCP:
srv_socket = socket(AF_INET, SOCK_STREAM, 0);
if (srv_socket == INVALID_SOCKET)
{
MessageBox(NULL, "Ошибка создания сокета", "Error", MB_OK);
return;
}
При практическом программировании после выявления ошибки выполне-
ния функции следует сразу же вызвать функцию
WSAGetLastError
и некото-
рым образом информировать пользователя о конкретной причине ошибки.
6.3 Удаление сокета
Для освобождения ресурсов приложение должно закрывать сокеты, кото-
рые ему больше не нужны, вызывая функцию
closesocket:
ко над последним не определены некоторые (физически недопустимые для
сокета) операции (например, позиционирование указателя в потоке). Если же
произошла ошибка, функция socket возвращает значение INVALID_SOCKET.
Для анализа причины ошибки следует вызвать функцию WSAGetLastError, ко-
торая в данном случае может вернуть один из следующих кодов ошибки

     Код ошибки                                 Описание
WSANOTINITIALISED         Интерфейс Windows Sockets не был проинициализиро-
                          ван функцией WSAStartup
WSAENETDOWD               Сбой сетевого программного обеспечения
WSAEAFNOSUPPORT           Указан неправильный тип адреса
WSAEINPROGRESS            Выполняется блокирующая функция интерфейса
                          Windows Sockets
WSAEMFILE                 Израсходован весь запас свободных дескрипторов
WSAENOBUFS                Нет памяти для создания буферов
WSAEPROTONOSUPPORT        Указан неправильный протокол
WSAEPROTOTYPE             Указанный протокол несовместим с данным типом соке-
                          та
WSAESOCKNOSUPPORT         Указанный тип сокета несовместим с данным типом ад-
                          реса

  Ниже приведен фрагмент кода, в котором создается сокет для передачи
данных с использование протокола TCP:

srv_socket = socket(AF_INET, SOCK_STREAM, 0);

if (srv_socket == INVALID_SOCKET)
{
    MessageBox(NULL, "Ошибка создания сокета", "Error", MB_OK);
    return;
}

  При практическом программировании после выявления ошибки выполне-
ния функции следует сразу же вызвать функцию WSAGetLastError и некото-
рым образом информировать пользователя о конкретной причине ошибки.




  6.3 Удаление сокета

  Для освобождения ресурсов приложение должно закрывать сокеты, кото-
рые ему больше не нужны, вызывая функцию closesocket:

                                  44