2017-10-19 20 views
0

Je dois créer un socket qui écoute deux adresses IP. est-ce possible?Est-il possible de lier une socket à 2 adresses dans c?

struct sockaddr_in6 bind_addr; 
memset(&bind_addr, 0, sizeof(bind_addr)); 

bind_addr.sin6_family = AF_INET6; 
bind_addr.sin6_port = htons(9001); 
bind_addr.sin6_addr = in6addr_any; 

if (bind(fd,(struct sockaddr *) &bind_addr,sizeof(bind_addr)) < 0) { 
    perror("bind() failed"); 
    return -1; 
} 

je besoin de quelque chose comme « in6addr_any », qui écoute de toutes les adresses IP mais pour deux d'entre eux seulement.

+0

Non. Créez deux sockets. –

+2

Non, vous ne pouvez pas lier une socket à plusieurs interfaces. Si vous devez vous connecter à plusieurs interfaces, vous avez besoin d'une socket par interface. Il est cependant facile de multiplexer ou d'interroger plusieurs sockets. –

+0

@Someprogrammerdude coutures agréable de multiplexer ou d'interroger plusieurs sockets. des indices? – Gioviiz

Répondre

3

Non, vous devez utiliser deux sockets différentes pour cela; lier chaque socket à l'une des adresses.