是否有可能解密給定sockaddr_in結構的主機名?POSIX插座;從sockaddr_in結構解密主機名
struct sockaddr_in {
short sin_family; // e.g. AF_INET, AF_INET6
unsigned short sin_port; // e.g. htons(3490)
struct in_addr sin_addr; // see struct in_addr, below
char sin_zero[8]; // zero this if you want to
};
struct in_addr {
unsigned long s_addr; // load with inet_pton()
};
我已經嘗試打印出「udp_server.sin_addr.s_addr」(其中udp_server是類型爲struct sockaddr_in的)和它印刷我的數。
我相信s_addr變量轉換爲網絡長嗎?如何將其轉換爲可讀格式,以便我可以確定主機?
但請注意,這會產生人類可讀的* IP地址*,而不是*主機名*。要恢復*主機名*,如果您擁有的只是一個套接字地址,則必須執行反向DNS查找(例如,使用'getnameinfo'),這不能保證給您提供任何有用的信息。 (這就是爲什麼,例如,HTTP/1.1要求客戶端告訴服務器它認爲它正在與應用層數據通話的主機名。) – zwol 2015-05-28 16:53:54