我有一个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
,请告诉我如何修复它?