通过侦听套接字接受的打开套接字,我想获取远程端的主机名。将 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 可能有。