[英]Get IP address from socket descriptor?
我已經打開了一個TCP套接字服務器(我省略了一些東西,它是從這里獲取的
sockfd = socket(p->ai_family, p->ai_socktype,
p->ai_protocol))
是否有可能從sockfd獲取服務器的IP地址? 如果不是我應該在哪里看?
編輯:我想知道服務器的地址(這是在任何客戶端連接之前)。
如果你想知道套接字另一端的誰,你可以在Linux中使用getpeername 。 getsockname會告訴你你是誰。 您可以在綁定時確定服務器最初要使用的地址。
您可能還會發現此SO問題很有用: 將套接字綁定到網絡接口
還有W. Richard Stevens撰寫的“Unix網絡編程,第1卷”一書。
在客戶端連接之前,您不能使用套接字來獲取服務器的地址,因為它是未知的。
原則上,主機可以具有多個IP。 用於連接服務器的IP是屬於接口的IP,連接通過該IP到達。 在連接到達之前,它是未知的。
即使您只有一個IP,連接也可能從機器內到達,在這種情況下,地址將為127.0.0.1
。
因此,偵聽套接字沒有關於IP的信息。
您需要找到機器具有的接口以及它們的IP。
服務器的地址是傳遞給bind()
的成功調用的地址(如您鏈接的源中所示)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.