在socket绑定时处理IP地址更改

2024-05-15 08:52:46 发布

您现在位置:Python中文网/ 问答频道 /正文

在Linux上使用Python:我有一个TCPSocket服务器,我想在eth0上监听它,没有其他接口。如果eth0没有地址,则套接字根本不应侦听。在

我可以绑定到与eth0关联的IP地址,但是如果该地址更改,我的套接字将不再接收连接。似乎没有简单的方法来接收IP地址更改的通知。在

我可以轮询eth0的IP地址,并在新地址更改时将其绑定到新地址。有没有更好的方法来实现这一点?在

我研究了sobindtoDevice,但这需要root权限。在


Tags: 方法服务器权限linux地址rooteth0tcpsocket
1条回答
网友
1楼 · 发布于 2024-05-15 08:52:46

似乎你有两个解决方案,正如你所说:

  1. 轮询以获取接口的IP地址,当服务器发生变化时重新启动服务器。

  2. 使用netlink(man 7 netlink)监听指示您的IP已更改的事件。

通过搜索github上的RTMGRP_IPV4_IFADDR(IPv4地址添加/删除事件),可以找到使用netlink的代码示例。在

相关问题 更多 >