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

UptoLike

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

47
}
} ;
#define s_addr S_un.S_addr;
#define s_host S_un.S_un_b.s_b2;
#define s_net S_un.S_un_b.s_b1;
#define s_imp S_un.S_un_w.s_w2;
#define s_impno S_un.S_un_b.s_b4;
#define s_lh S_un.S_un_b.s_b3;
При инициализации сокета в этой структуре следует указать адрес IР (32-
битовое уникальное число, идентифицирующее данный компьютер, о прин-
ципах 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
.
     }
};

#define   s_addr    S_un.S_addr;
#define   s_host    S_un.S_un_b.s_b2;
#define   s_net     S_un.S_un_b.s_b1;
#define   s_imp     S_un.S_un_w.s_w2;
#define   s_impno   S_un.S_un_b.s_b4;
#define   s_lh      S_un.S_un_b.s_b3;

  При инициализации сокета в этой структуре следует указать адрес IР (32-
битовое уникальное число, идентифицирующее данный компьютер, о прин-
ципах 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.

                                   47