Bonjour,

J'ai une machine avec 4 IPs : A, B, C et D

Je voudrais créer un programme serveur qui écoute sur un port X et sur les adresses A et B uniquement.

Est-ce possible ?

Mon code actuel écoute sur toutes les IPs et ça va pas.
Je pourrais faire un bind sur l'IP A ou B mais comment faire pour A et B ?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
struct sockaddr_in SockLocale;
 
g_sock = socket(AF_INET, SOCK_STREAM, 0);
if(g_sock==INVALID_SOCKET) exit(-1);
 
memset(&SockLocale,0,sizeof(struct sockaddr_in));
SockLocale.sin_family = AF_INET;
SockLocale.sin_addr.s_addr = htonl(INADDR_ANY);
SockLocale.sin_port = htons(X);
 
if(bind(g_sock,(struct sockaddr*)&SockLocale,sizeof(struct sockaddr_in)) != SOCKET_ERROR) {
    if(listen(g_sock, 5)<0) {
        printf("Echec de Listen()\n");
        exit(-1);
    }
}
else {
    printf("echec de bind()\n");
    exit(-1);
}