リッスン ソケットによって受け入れられたオープン ソケットを使用して、リモート エンドのホスト名を取得したいと考えています。複数のホスト名を持つホストに getnameinfo() を使用すると、常に同じホスト名が得られるとは限りません。それらすべてを取得することは可能ですか、少なくとも毎回同じものを取得することは可能ですか?
正規のホスト名についていくつかのドキュメントを読みましたが、これが必要なものであることを示唆する以上の情報を見つけることができません。
getnameinfo() を呼び出す方法は次のとおりです
char szHostname[ NI_MAXHOST ];
const sockaddr* pSock;
int nSockLen;
// stuff to get a pSock
int ret = getnameinfo( pSock, nSockLen, szHostname, NI_MAXHOST, 0, 0, NI_NAMEREQD );
if ( ret != 0 )
ret = getnameinfo( pSock, nSockLen, szHostname, NI_MAXHOST, 0, 0, NI_NUMERICHOST );
printf( szHostname );
ピア X に複数のホスト名 AAA および BBB がある場合、szHostname はいずれかを持つことができます。