ВУЗ:
Составители:
Рубрика:
- 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",
Страницы
- « первая
- ‹ предыдущая
- …
- 44
- 45
- 46
- 47
- 48
- …
- следующая ›
- последняя »