2014-07-16 47 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地址添加/删除事件)。

相关问题