2014-07-16 44 views
0

在Linux上使用Python:我有一個TCPSocket服務器,我想在eth0上監聽,而沒有其他接口。如果eth0沒有地址,套接字不應該聽。在套接字綁定到接口時處理IP地址更改

我可以綁定到與eth0相關聯的IP地址,但如果該地址更改,我的套接字將不再接收連接。似乎沒有簡單的方法來接收IP地址更改的通知。

我可以輪詢eth0的IP地址,並在套接字更改時將其綁定到新地址。有沒有更好的方式來實現這一點?

我探討了SO_BINDTODEVICE,但這需要root權限。

+0

在您的代碼中啓動套接字之前,您可以獲得eth0的ip嗎? –

+0

在這個問題中最有爭議的答案顯示瞭如何使用C中的AF_NETLINK套接字監視Linux上的地址更改:http://stackoverflow.com/questions/579783/how-to-detect-ip-address-change-programmatically-in -linux –

回答

0

似乎有兩種解決方法,如你所說:

  1. 投票讓你的界面的IP地址,重新啓動服務器時,它的變化。

  2. 傾聽,表明你的IP事件已經改變了使用網絡鏈路(男子7網絡鏈路)

您可以在GitHub上找到的使用網絡鏈路通過搜索RTMGRP_IPV4_IFADDR代碼示例(IPv4地址添加/刪除事件)。

相關問題