我想投一個struct sockaddr_storage的一個sockadd_in,這樣我可以打印出數據報文的源IP地址, 我似乎沒有能夠拿到投正確的,鑄造struct sockaddr_storage的作爲有sockaddr_in爲inet_ntop
struct sockaddr_storage peer_addr;
getnameinfo((struct sockaddr *) &peer_add
peer_addrlen,
hostbuff, sizeof(hostbuff),
NULL, 0, NI_NAMEREQD);
inet_ntop(AF_INET, (((struct sockaddr_in *)peer_addr).sin_addr), ipbuff, INET_ADDRSTRLEN);
當我試圖結構轉換爲sockaddr_in的,我要麼得到「無法轉換爲指針」,或當我刪除dereferance我得到「轉換到非請求類型定標器」。
我已經嘗試了很多組合,根本不明白我去哪裏錯了。
我想getnameinfo()返回的地址的主機名? – Babbleshack
@Babbleshack:請參閱NI_NUMERICHOST標誌的「man getnameinfo」:以數字形式返回地址,如同調用inet_ntop(3),而不是主機名。 –
謝謝,對不起,其如此明顯!生病現在嘗試。 – Babbleshack