1
我有一個用cpp編寫的服務器。它正在聽0.0.0.0。現在我想從服務器接收數據包的位置找到網絡接口。有沒有辦法做到這一點?如何找到一個服務器在Linux上cpp中的0.0.0.0監聽的網絡接口?
我有一個用cpp編寫的服務器。它正在聽0.0.0.0。現在我想從服務器接收數據包的位置找到網絡接口。有沒有辦法做到這一點?如何找到一個服務器在Linux上cpp中的0.0.0.0監聽的網絡接口?
使用getsockname()
獲取接收數據包的套接字描述符綁定的IP地址。
然後使用getifaddr()
來遍歷可用的接口,找到哪一個匹配第一步中找到的IP地址。
我現在正在使用同一件事。但是有時getsockname()會給出ip地址,因爲沒有接口(當我們執行ifconfig時ip不存在)任何想法爲什麼它是這樣的? –
@ user2599593:「*有時候*」是模糊的以便得出任何結論......嘗試在此處設置示例並將其作爲問題。但是,這不應該發生。在調用'getsochname()'之後,在調用'ifconfig'之前,接口可能失效了? – alk