[C] pb de récupération de l'IP d'une socket cliente
Bonjour,
je m'adresse à vous car j'ai l'impression que mon code pour récupérer l'IP d'une socket TCP cliente qui vient de se connecter à mon serveur est bancal:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
char* ipStr = malloc(16 * sizeof(char));
struct sockaddr_in address;
socklen_t address_len;
int result = getpeername(fd, &address,&address_len);
if (result == 0) {
strcpy(ipStr,inet_ntoa(address.sin_addr));
}
else {
strcpy(ipStr, "***.***.***.***");
}
// do something with my char*
free(ipStr); |
Je me retrouve avec des résultats pour le moins bizarre:
- de temps en temps j'ai des IPs en 255.x.y.z
- de temps en temps, j'ai des ***.***.***.***
- de temps en temps, j'ai des 0.0.0.0
Quelqu'un aurait-il une idée ou même une simple piste ?
Merci d'avance :D
EDIT: a noter que je travaille sur SunOS:
Citation:
>uname -a
SunOS sun1 5.9 Generic_117171-02 sun4u sparc SUNW,Sun-Fire-480R