2
在我的Linux C++应用程序中,我使用getpeername来获取对等IP。 我的问题是:当我在我的机器上启用IPv6时,我从对等机构获得的IP与家庭IF_INET6虽然是IPv4。C++ Linux getpeername IP系列
代码:
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;
}
如何解决呢?
thanks1
请注意`struct socklen_t`是错误的,它应该只是`socklen_t`。 – user562374 2011-01-09 10:52:38