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

UptoLike

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

- 46 -
принципах IP-адресации подробнее см. подраздел 7.1.1), с которым будет ра-
ботать данный сокет. Если сокет будет работать с любым адресом (например,
создается сервер, который будет доступен из узлов с любым адресом). Адрес
для сокета может быть указан следующим образом
srv_address.sin_addr.s_addr = INADDR_ANY;
В том случае, если сокет будет работать с определенным IP-адресом
(например, создается приложение-клиент, которое будет обращаться к серве-
ру с конкретным адресом IP), в указанную структуру необходимо записать
реальный IP-адрес.
Датаграммный протокол UDP позволяет посылать пакеты данных одно-
временно всем рабочим станциям в широковещательном режиме. Для этого
необходимо указать
адрес как INADDR_BROADCAST.
Если известен адрес в виде четырех десятичных чисел, разделенных точ-
кой (именно так его может вводить пользователь), то можно заполнить поле
адреса при помощи функции inet_addr (структура dest_sin имеет тип
SOCKADDR_IN)
dest_sin.sin_addr.s_addr = inet_addr("200.200.200.201");
В случае ошибки функция возвращает значение INADDR_NONE, что и
следует использовать для проверки.
Обратное преобразование адреса IP в текстовую строку можно при не-
обходимости легко выполнить с помощью функции inet_ntoa, имеющий сле-
дующий прототип
char FAR *
inet_ntoa(struct in_addr in);
При ошибке эта функция возвращает NULL.
Однако чаще всего пользователь работает с доменными именами, при-
меняя сервер DNS или файл HOSTS (см. подраздел 7.1.1). В этом случае сле-
дует воспользоваться функцией gethostbyname, возвращающей адрес IP, а
затем записать полученный адрес в структуру sin_addr
PHOSTENT phe;
phe = gethostbyname(“ftp.microsoft.com”);
if (phe == NULL)
{
closesocket(srv_socket);
MessageBox(NULL, "Ошибка функции GetHostByName",
                                      - 46 -


принципах IP-адресации подробнее см. подраздел 7.1.1), с которым будет ра-
ботать данный сокет. Если сокет будет работать с любым адресом (например,
создается сервер, который будет доступен из узлов с любым адресом). Адрес
для сокета может быть указан следующим образом

srv_address.sin_addr.s_addr = INADDR_ANY;

     В том случае, если сокет будет работать с определенным IP-адресом
(например, создается приложение-клиент, которое будет обращаться к серве-
ру с конкретным адресом IP), в указанную структуру необходимо записать
реальный IP-адрес.
     Датаграммный протокол UDP позволяет посылать пакеты данных одно-
временно всем рабочим станциям в широковещательном режиме. Для этого
необходимо указать адрес как INADDR_BROADCAST.
     Если известен адрес в виде четырех десятичных чисел, разделенных точ-
кой (именно так его может вводить пользователь), то можно заполнить поле
адреса при помощи функции inet_addr (структура dest_sin имеет тип
SOCKADDR_IN)

dest_sin.sin_addr.s_addr = inet_addr("200.200.200.201");

    В случае ошибки функция возвращает значение INADDR_NONE, что и
следует использовать для проверки.
    Обратное преобразование адреса IP в текстовую строку можно при не-
обходимости легко выполнить с помощью функции inet_ntoa, имеющий сле-
дующий прототип

char FAR *
inet_ntoa(struct in_addr in);

    При ошибке эта функция возвращает NULL.
    Однако чаще всего пользователь работает с доменными именами, при-
меняя сервер DNS или файл HOSTS (см. подраздел 7.1.1). В этом случае сле-
дует воспользоваться функцией gethostbyname, возвращающей адрес IP, а
затем записать полученный адрес в структуру sin_addr

PHOSTENT phe;

phe = gethostbyname(“ftp.microsoft.com”);

if (phe == NULL)
{
    closesocket(srv_socket);
    MessageBox(NULL, "Ошибка функции GetHostByName",