3

基本的なソケット コマンドのソケット アドレスを検索するために getaddrinfo を使用しています。しかし、最近、それが返すアドレスは、inet_ntop を使用して見つけた偽の IP アドレスのものです。Beej's Guideで提供されているコードと同様に、コードを試してみましたが、どちらも同じ結果が得られました。コードは次のとおりです。

struct addrinfo hints, *info;
int status;

memset(&hints, 0, sizeof hints);

hints.ai_family = AF_INET;
hints.ai_socktype = SOCK_STREAM;

if(status = getaddrinfo(address, port, &hints, &info)) {
    fprintf(stderr, "getaddrinfo: %s\n", gai_strerror(status));
}

char ip4[INET_ADDRSTRLEN];
inet_ntop(AF_INET, info->ai_addr, ip4, INET_ADDRSTRLEN);

std::cout<<ip4<<std::endl;

使用するアドレスに関係なく、常に次の形式の IP が返されます

16.2.x.y

ここで、256*x + y はポート番号に等しくなります。誰かがこれが起こるのを見たことがありますか、それともなぜ私にこれを与えているのか誰か推測できますか?

4

1 に答える 1

6

合格してはいけません

((sockaddr_in const *)info->ai_addr)->sin_addr

inet_ntop

于 2009-12-27T18:58:26.227 に答える