8.14. Определение исходящего интерфейса для UDP
8.14. Определение исходящего интерфейса для UDP
С помощью присоединенного сокета UDP можно также задавать исходящий интерфейс, который будет использован для отправки дейтаграмм к определенному получателю. Это объясняется побочным эффектом функции connect, примененной к сокету UDP: ядро выбирает локальный IP-адрес (предполагается, что процесс еще не вызвал функцию bind для явного его задания). Локальный адрес выбирается в процессе поиска адреса получателя в таблице маршрутизации, причем берется основной IP-адрес интерфейса, с которого, согласно таблице, будут отправляться дейтаграммы.
В листинге 8.13 показана простая программа UDP, которая с помощью функции connect соединяется с заданным IP-адресом и затем вызывает функцию getsockname, выводя локальный IP-адрес и порт.
Листинг 8.13. Программа UDP, использующая функцию connect для определения исходящего интерфейса
//udpcliserv/udpcli09.c
1 #include "unp.h"
2 int
3 main(int argc, char **argv)
4 {
5 int sockfd;
6 socklen_t len;
7 struct sockaddr_in cliaddr, servaddr;
8 if (argc != 2)
9 err_quit("usage: udpcli <Ipaddress>");
10 sockfd = Socket(AF_INET, SOCK_DGRAM, 0);
11 bzero(&servaddr, sizeof(servaddr));
12 servaddr.sin_family = AF_INET;
13 servaddr.sin_port = htons(SERV_PORT);
14 Inet_pton(AF_INET, argv[1], &servaddr.sin_addr);
15 Connect(sockfd, (SA*)&servaddr, sizeof(servaddr));
16 len = sizeof(cliaddr);
17 Getsockname(sockfd, (SA*)&cliaddr, &len);
18 printf("local address %s ", Sock_ntop((SA*)&cliaddr, len));
19 exit(0);
20 }
Если мы запустим программу на узле freebsd с несколькими сетевыми интерфейсами, то получим следующий вывод:
freebsd % udpcli09 206.168.112.96
local address 12.106.32.254:52329
freebsd % udpcli09 192.168.42.2
local address 192.168.42.1:52330
freebsd % udpcli09 127.0.0.1
local address 127.0.0.1:52331
По рис. 1.7 видно, что когда мы запускаем программу первые два раза, аргументом командной строки является IP-адрес в разных сетях Ethernet. Ядро присваивает локальный IP-адрес первичному адресу интерфейса в соответствующей сети Ethernet. При вызове функции connect на сокете UDP ничего не отправляется на этот узел — это полностью локальная операция, которая сохраняет IP-адрес и порт собеседника. Мы также видим, что вызов функции connect на неприсоединенном сокете UDP также присваивает сокету динамически назначаемый порт.
ПРИМЕЧАНИЕ
К сожалению, эта технология действует не во всех реализациях, что особенно касается ядер, происходящих от SVR4. Например, это не работает в Solaris 2.5, но работает в AIX, Digital Unix, Linux, MacOS X и Solaris 2.6.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Элементы интерфейса
Элементы интерфейса При знакомстве с любым новым программным продуктом полезно сразу иметь информацию о его назначении, компонентах, основных возможностях и отличиях от предыдущих версий. Это справедливо для новой операционной системы, особенно если она представляет
9.2. Модели интерфейса
9.2. Модели интерфейса Сокеты SCTP бывают двух типов: «один-к-одному» и «один-ко-многим». Сокету типа «один-к-одному» всегда сопоставляется ровно одна ассоциация SCTP. Вспомните, что в разделе 2.5 мы отмечали, что ассоциация является соединением между двумя системами, которое
17.5. Конфигурация интерфейса
17.5. Конфигурация интерфейса Один из шагов, выполняемых многими программами, работающими с сетевыми интерфейсами системы, — это получение от ядра списка всех интерфейсов, сконфигурированных в системе. Это делается с помощью вызова SIOCGIFCONF, использующего структуру ifconf,
Настройка интерфейса
Настройка интерфейса Все палитры в окне программы Photoshop можно перемещать. Вы можете скрыть палитры, которыми не пользуетесь, или, наоборот, отобразить те, которые вам нужны чаще всего. Чтобы не настраивать интерфейс приложения при каждом запуске, в Photoshop предусмотрена
Настройка интерфейса
Настройка интерфейса Разработчики программы Premiere Pro дали пользователю возможность изменять интерфейс программы по своему вкусу. Вы можете переместить окна в другие части экрана, изменить их размер, поменять местами вкладки, а также вынести содержимое какой-либо вкладки
Настройка интерфейса
Настройка интерфейса Под настройкой интерфейса системы КОМПАС-3D следует понимать следующие возможности изменения внешнего вида программы:• выбор стиля;• настройка внешнего вида;• изменение состава пунктов главного меню;• изменение состава панелей инструментов;•
Элементы интерфейса
Элементы интерфейса Первое, что вы увидите после запуска программы 3ds Max 2008, – ее основное окно (рис. 1.1). Рис. 1.1. Окно программы 3ds Max 2008Если вы начинающий пользователь и не знакомы с интерфейсом, сначала осмотрите элементы и ознакомьтесь с окружением. Вы увидите, что
Общий вид интерфейса
Общий вид интерфейса Первого же взгляда на программу Adobe Photoshop (рис. 6.1) достаточно, чтобы увидеть знакомые элементы управления: кнопки управления окном, строку меню, полосы прокрутки у отдельных окон. В то же время есть и полностью незнакомые элементы. Мы рассмотрим их
Тип интерфейса
Тип интерфейса Интерфейс - это именованная коллекция определений абстрактных членов, которая может поддерживаться (т.е. реализоваться) данным классом или структурой. В отличие от модели COM, интерфейсы .NET не являются производными одного общего базового интерфейса, такого
Определение открытого интерфейса класса
Определение открытого интерфейса класса После создания данных внутреннего состояния класса и набора конструкторов следующим шагом должно быть определение деталей открытого интерфейса класса. Этим терминам обозначают множество членов, непосредственно доступных из
1.1. Элементы интерфейса
1.1. Элементы интерфейса Первое, что вы увидите после запуска программы 3ds Max 2008, – ее основное окно (рис. 1.1).Если вы начинающий пользователь и не встечались с интерфейсом программы, сначала осмотрите элементы и ознакомьтесь с окружением. Вы увидите, что интерфейс
Элементы интерфейса
Элементы интерфейса Теперь поговорим об отключении или включении отдельных элементов интерфейса.Отключение анимацииОтключить все эффекты анимации можно с помощью параметра REG_DWORD-типа TurnOffSPIAnimations, расположенного в ветви реестра HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionPoliciesExplorer.
Настройка интерфейса
Настройка интерфейса Существует возможность изменить расположение элементов интерфейса Проигрывателя Windows Media – переместить все элементы интерфейса в противоположную сторону (рис. 4.9). Для этого достаточно параметру REG_DWORD-типа ForceBiDi присвоить значение 1. Данный параметр