Программное обеспечение компьютерных сетей и информационных систем. Баканов В.М. - 47 стр.

UptoLike

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

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