gethostbyaddr()有分段错误,为什么?

时间:2015-10-30 07:32:33

标签: c++ linux sockets

我有一个c ++程序来使用gethostbyaddr()方法获取本地机器名,要求是使用参数运行程序,这是一个ip地址。

#include <iostream>
#include <errno.h>
#include <netdb.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <cstring>
#include <cstdlib>

using namespace std;

int main(int argc, char const *argv[]) {

    struct hostent * testing_case;
    struct in_addr ipv4addr;
    if (argc != 2) {
        cout<<"Error"<<endl;
        return 0;
    }
    else{
        inet_aton(argv[1],&ipv4addr);
        testing_case = gethostbyaddr(&ipv4addr, sizeof(ipv4addr), AF_INET);
        cout<<"Host Name is: "<<testing_case->h_name<<endl;
    }


    return 0;
}

但是当我输入本地IP地址时,它会返回segmentation fault,请告诉我如何修复它?

0 个答案:

没有答案