ВУЗ:
Составители:
Рубрика:
- 47 -
"Error", MB_OK);
return;
}
memcpy((char FAR *) & (dest_sin.sin_addr), phe->h_addr, phe->h_length);
В случае ошибки функция gethostbyname возвращает NULL, после чего
причину ошибку можно выяснить путем проверки кода возврата функцией
WSAGetLastError.
Если указанный адрес найден в базе DNS или файле HOSTS (см. под-
раздел 7.1.1), функция gethostbyname возвращает указатель на структуру
hostent, описанную ниже
struct hostent
{
char FAR *h_name; // имя узла
char FAR *FAR *h_aliases; // список альтернативных имен
short h_addrtype: // тип адреса узла
short h_lenght; // длина адреса
char FAR *FAR *h_addr_list; // список адресов
#define h_add r h_addr_list[0]; // адрес
};
typedef struct hostent *PHOSTENT;
typedef struct hostent FAR *LPHOSTENT;
Искомый адрес находится в первом элементе списка h_addr_list[0], на
который можно также ссылаться при помощи h_addr, длина поля адреса на-
ходится в поле h_length.
6.5.ПРИВЯЗКА АДРЕСА К СОКЕТУ
После подготовки структуры SOCKADDR (записи в нее параметров
сокета - в частности, адреса) следует привязку адреса к сокету при помощи
функции
bind
int
bind(SOCKET sock, const struct sockaddr FAR *addr, int namelen);
Параметр sock содержит дескриптор созданного ранее функцией socket
сокета, в поле addr следует записать указатель на подготовленную структу-
ру SOCKADDR, в поле namelen - размер этой структуры.
В случае ошибки функция bind возвращает значение
SOCKET_ERROR, дальнейший анализ причин ошибок следует выполнять
- 47 - "Error", MB_OK); return; } memcpy((char FAR *) & (dest_sin.sin_addr), phe->h_addr, phe->h_length); В случае ошибки функция gethostbyname возвращает NULL, после чего причину ошибку можно выяснить путем проверки кода возврата функцией WSAGetLastError. Если указанный адрес найден в базе DNS или файле HOSTS (см. под- раздел 7.1.1), функция gethostbyname возвращает указатель на структуру hostent, описанную ниже struct hostent { char FAR *h_name; // имя узла char FAR *FAR *h_aliases; // список альтернативных имен short h_addrtype: // тип адреса узла short h_lenght; // длина адреса char FAR *FAR *h_addr_list; // список адресов #define h_add r h_addr_list[0]; // адрес }; typedef struct hostent *PHOSTENT; typedef struct hostent FAR *LPHOSTENT; Искомый адрес находится в первом элементе списка h_addr_list[0], на который можно также ссылаться при помощи h_addr, длина поля адреса на- ходится в поле h_length. 6.5.ПРИВЯЗКА АДРЕСА К СОКЕТУ После подготовки структуры SOCKADDR (записи в нее параметров сокета - в частности, адреса) следует привязку адреса к сокету при помощи функции bind int bind(SOCKET sock, const struct sockaddr FAR *addr, int namelen); Параметр sock содержит дескриптор созданного ранее функцией socket сокета, в поле addr следует записать указатель на подготовленную структу- ру SOCKADDR, в поле namelen - размер этой структуры. В случае ошибки функция bind возвращает значение SOCKET_ERROR, дальнейший анализ причин ошибок следует выполнять
Страницы
- « первая
- ‹ предыдущая
- …
- 45
- 46
- 47
- 48
- 49
- …
- следующая ›
- последняя »