Преобразовать результат inet_ntop в строку

Как я могу преобразовать возврат функции inet_ntop (const char *) для string?

Код:

string ip = inet_ntop(b->ifa_addr->sa_family,tempAddrPtr,addressOutputBuffer, sizeof(addressOutputBuffer));

всегда результат с segfault …

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);

2

Решение

inet_ntop возвращает char *, строковый объект ip будет сгенерирован правильно, если ваш inet_ntop вернется. Крутая часть — это параметры inet_ntop, параметр с указателями.

некоторые отладочные подсказки:

1. check b is null or not
2. tempAddrPtr is valid or not
3. addressOutputBuffer is valid or not
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]