【发布时间】:2012-11-18 05:25:28
【问题描述】:
如何将函数inet_ntop (const char *) 的返回值转换为string?
代码:
string ip = inet_ntop(b->ifa_addr->sa_family,tempAddrPtr,addressOutputBuffer, sizeof(addressOutputBuffer));
总是出现段错误...
struct ifaddrs *a;
void *tempAddrPtr = NULL;
struct ifaddrs *b;
char addressOutputBuffer[INET6_ADDRSTRLEN];
int i=0;
i=getifaddrs(&a);
cout << i;
b=a;
cout << name;
for (b = a; b; b = b->ifa_next) {
cout << b->ifa_name;
if(b->ifa_addr->sa_family == AF_INET)
tempAddrPtr = &((struct sockaddr_in *)b->ifa_addr)->sin_addr;
else
tempAddrPtr = &((struct sockaddr_in6 *)b->ifa_addr)->sin6_addr;
printf(" Internet Address: %s \n",
inet_ntop(b->ifa_addr->sa_family,
tempAddrPtr,
addressOutputBuffer,
sizeof(addressOutputBuffer)));
string ip = inet_ntop(b->ifa_addr->sa_family,tempAddrPtr,addressOutputBuffer, sizeof(addressOutputBuffer));
}
freeifaddrs(a);
【问题讨论】:
-
向我们展示设置调用
inet_ntop的代码。最重要的是如何分配addressOutputBuffer以及该变量如何获取其值。 -
您是说第一个
inet_ntop工作正常,而第二个出现故障?
标签: c++ string sockets inet-ntop