Dans mon application Linux C++, j'utilise getpeername pour obtenir l'adresse IP homologue. mon problème est: quand j'active l'IPv6 sur ma machine l'IP que j'ai reçu du pair est avec la famille IF_INET6 bien que ce soit IPv4.C++ Linux getpeername Famille IP
Code:
int GetSockPeerIP(int sock)
{
struct sockaddr_storage ss;
struct socklen_t salen = sizeof(ss);
struct sockaddr *sa;
memset(&ss,0,salen);
sa = (sockaddr *)&ss;
if(getpeername(sock,sa,&salen) != 0)
{
return -1;
}
char * ip=NULL:
if(sa->sa_family == AF_INET)
{
ip = inet_ntoa((struct sockaddr_in *)sa)->sin_addr);
}
else
{
//ip = how to convert IPv6 to char IP?
}
return 0;
}
comment puis-je résoudre ce problème?
thanks1
Notez que 'struct socklen_t' est faux, il devrait être juste' socklen_t'. – user562374