Случился резкий паралич в мозгу. Я не как не могу сообразить как задать сетевой интерфейс с которого будет происходить рассылка данных.
Вот что у меня вызывает коллапс мысли: Для multicast при подключении к группе мы можем установить интерйфейс на котором ожидаем получать дейтаграммы
struct ip_mreq
{
struct in_addr imr_multiaddr; /* IP multicast address of group */
struct in_addr imr_interface; /* local IP address of interface */
};
Для любого сокета мы может сделать bind указав в
struct sockaddr_in {
short int sin_family; // Семейство адресов
unsigned short int sin_port; // Номер порта
struct in_addr sin_addr; // IP-адрес
unsigned char sin_zero[8]; // "Дополнение" до размера структуры sockaddr
};
Коллапс мысли вызывает наличие опции outbound_interface для Multicast в asio. Предполагается что это опция для setsockopt, а значит это для любого сокета (TCP/UDP) и как это коррелирует c bind ?
IP_MULTICAST_IF (IPV4-only) Sets the IPv4 interface address that is used to send outbound multicast datagrams. Multicast datagrams can be sent only on one interface at a time. The optvalue parameter is the IP address of the interface. This option returns 0 if it is successfully completed; otherwise, it returns the error number.
Хм... т.е. только для Multicast... а почему bind в этом случае устроил ?