2013-06-26 44 views
0

對於偵聽套接字接受的打開的套接字,我想獲取遠程端的主機名。 對具有多個主機名的主機使用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可能有兩種。

+2

請發佈一些代碼,你已經嘗試過sofar。 – hetepeperfan

+0

如何使用getnameinfo進行編輯。 – Johnny

回答

0

使用gethostbyaddr(),它會爲您提供您的互聯網地址(僅限IPv4)的所有DNS條目。第一個應該是規範的。如果你需要IPv6,那麼(如果認爲)你應該使用getaddrinfo()並在提示中設置AI_CANONNAME(參見手冊)。

相關問題