C プログラミング言語でサーバーのパブリック IP を取得する方法を知りたいです。
libcurlでこれを行う方法はすでに知っていますが、ソケットプログラミングでこの情報を取得する方法を理解したいと思います(可能であれば)。
私はすでに試しましstruct hostent *hp
たが、ローカルアドレスしか得られません127.0.0.1
これは私が使用したコードです:
int main(int argc, char *argv[]){
struct hostent *hp;
int i=0;
if((hp=gethostbyname(argv[1])) == NULL){
herror("gethostbyname()");
exit(1);
}
fprintf(stdout, "Hostname: %s\n", hp->h_name);
/* fprintf (stdout,"IP server: %s\n",inet_ntoa(*((struct in_addr *)hp->h_addr))); con questa printo solo 1 ip */
while (hp->h_addr_list[i] != NULL) { /* mentre così printo tutti gli eventuali ip */
printf("IP: %s\n", inet_ntoa(*(struct in_addr*)(hp->h_addr_list[i])));
i++;
}
return 0;
}