我正在尝试找到一种方法来有效地更改运行我的程序的计算机的 IP 和网络掩码。我必须能够与用户有权访问的“盒子”保持通信,并且可以更改该盒子的 IP(但不能更改 Linux 主机的 IP)。幸运的是,盒子通过多播地址广播它的 IP。我能够读取该地址并与盒子广播的任何 IP 进行通信。但是,我的问题是,当盒子更改 Linux 主机子网之外的 IP 时,我会失去连接(正如我预期的那样)。
因此,当 Linux 主机检测到正在广播的 IP 位于其子网之外时,我需要一种快速而肮脏的方法来更改 Linux 主机的 IP 和网络掩码。我知道我可以修改/编辑/etc/networking/interfaces 文件,但我希望有一些“实时”的东西,我不需要重新启动网络接口(interface)或 Linux 主机。此外,我想维护我在更改期间当前打开的所有套接字。我的主要问题是我有大量连接由其他应用程序运行,这些连接不会因 IP 转换而损坏。另外,如果可能的话,我想避免在主机 IP 转换后必须为 Linux 重新运行 multicast route add 命令。
我可以做些什么来满足这些要求吗?谢谢。
最佳答案
您不想更改接口(interface)的 IP 地址,您想要向接口(interface)添加额外的 IP 地址和子网。在您的 Linux 系统文档中搜索 IP Alias功能。
关于c++ - 使用 C/C++ 设置 Linux IP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17056608/