c++ - 使用 C/C++ 设置 Linux IP

标签 c++ c linux networking ipv4

我正在尝试找到一种方法来有效地更改运行我的程序的计算机的 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功能。

Here's the HOWTO .

关于c++ - 使用 C/C++ 设置 Linux IP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17056608/

相关文章:

c++ - 使用 WRL 迭代 IMapView

c++ - RTSP c++ 直播示例源代码?

linux - 从 TestContainer 访问 Podman REST API

c++ - 创建 CMake 选项组

c++ - CreateProcess 成功,但 GetExitCodeProcess 返回 C0000142

c++ - 尝试使用 Redispp 在类中设置全局 Redis 连接

c - 为什么此代码会阻止 gcc 和 llvm 进行尾调用优化?

c - 如何用一行在 C 中初始化一个数组?

c - 使用 memcmp 比较 0 字节的缓冲区

C++,当从列表中获取值时,我填充其中的数组没有返回任何内容