当我编写twitter控制台应用程序时,我遇到了C函数gethostbyname()的问题。 Twitter API提供连接到https://api.twitter.com/oauth2/token,但当我尝试通过该函数获取IP时,它返回NULL。 Curl解析了URL很好,我不认为DNS存在问题。连接的代码与我尝试过的代码相同,但也无法正常工作。
P.S。也许我的问题非常明显,但我浪费了至少7个小时没有任何代码更改,只是试图找到答案。
#include <stdio.h>
#include <errno.h>
#include <netdb.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
int main(int argc, char *argv[])
{
int i;
struct hostent *he;
struct in_addr **addr_list;
if (argc != 2) {
fprintf(stderr,"usage: ghbn hostname\n");
return 1;
}
if ((he = gethostbyname(argv[1])) == NULL) { // get the host info
herror("gethostbyname");
return 2;
}
// print information about this host:
printf("Official name is: %s\n", he->h_name);
printf(" IP addresses: ");
addr_list = (struct in_addr **)he->h_addr_list;
for(i = 0; addr_list[i] != NULL; i++) {
printf("%s ", inet_ntoa(*addr_list[i]));
}
printf("\n");
return 0;
}