Question FAQ : Comment est-ce que mon serveur peut retrouver l’adresse ou le nom du client ?

Après l’appel à accept(), il faut utiliser la fonction getpeername() pour obtenir l’adresse du client. L’adresse du client est aussi retournée par la fonction accept() mais il est essential de renseigner le paramètre de la longueur de l’adresse avant pour que cela puisse fonctionner.
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
int t;
int len;
struct sockaddr_in sin;
struct hostent *host;

len = sizeof sin;
if (getpeername(t, (struct sockaddr *) &sin, &len) < 0)
        perror("getpeername");
else {
        if ((host = gethostbyaddr((char *) &sin.sin_addr,
                                  sizeof sin.sin_addr,
                                  AF_INET)) == NULL)
            perror("gethostbyaddr");
        else printf("remote host is '%s'\n", host->h_name);
}