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 : Sélectionner tout - Visualiser dans une fenêtre à part
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

EDIT: a noter que je travaille sur SunOS:
>uname -a
SunOS sun1 5.9 Generic_117171-02 sun4u sparc SUNW,Sun-Fire-480R