在Linux上使用Python:我有一个TCPSocket服务器,我想听eth0,没有其他接口。如果eth0没有地址,则套接字根本不应该监听。
我可以绑定到与eth0关联的IP地址,但如果该地址发生更改,我的套接字将不再接收连接。似乎没有简单的方法来接收IP地址更改通知。
我可以轮询eth0的IP地址,并在更改时将套接字绑定到新地址。有没有更好的方法来实现这个?
我探索了SO_BINDTODEVICE,但这需要root权限。
答案 0 :(得分:0)
似乎你有两个解决方案,正如你所说:
轮询以获取接口的IP,并在服务器发生变化时重新启动服务器。
使用netlink(man 7 netlink)监听指示您的IP已更改的事件
您可以通过在github上搜索RTMGRP_IPV4_IFADDR(IPv4地址添加/删除事件)来查找使用netlink的代码示例。