c++ - 获取具有到给定主机路由的接口(interface)的 IP 地址

标签 c++ c linux sockets networking

我正在编写一个简单的消息队列库,基本上可以让您通过 TCP 或 UDP 在两个服务器之间设置点对点消息传递服务。我想取消客户端/服务器的概念,因为它们的两个服务器将做同样的事情(发送和接收消息),所以哪个是哪个并不重要。

我想我会通过使用两个服务器的 IP 地址来决定哪个应该绑定(bind)服务器套接字以及哪个应该作为客户端连接(可能通过选择具有最小不相等八位字节的那个作为客户端)来做到这一点服务器,假设它不是同一台机器)。

为此,我需要知 Prop 有到另一台计算机的路由的接口(interface) [s] 的本地 IP 地址 [es]。有没有简单的方法来获取此信息?

最佳答案

$ ip route get 2a00:1450:4016:800::1011
2a00:1450:4016:800::1011 from :: via 2a01:4f8:100:63e0::1
    dev eth0  src 2a01:4f8:100:6fab:cdef::1  metric 0 

iproute 在内部使用 RTM_GETROUTE 网络链接消息来获取信息,您也可以。然后 src 指定将用于联系此主机的地址,如果您使用自动绑定(bind)(即不在连接之前调用 bind(2),或使用地址字段的通配符调用 bind)。

关于c++ - 获取具有到给定主机路由的接口(interface)的 IP 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9710394/

相关文章:

c++ - 统一的 int32 分布

c - 从 C 中的套接字读取给出奇怪的输出

php - Asterisk 执行失败 '/usr/share/asterisk/agi-bin/call_handle.php' : Permission denied

linux - curl 命令不通过 bash 中的 shell 脚本执行

c++ - 在Linux中,当同一套接字上的accept()调用正在进行时,套接字描述符在某些条件下从另一个线程关闭?

c++ - 是否有安全字符串的良好 C++ 实现

c++ - 这是 Visual Studio 2013 update 4 C++ 优化器错误还是我的代码有误?

c - 功能结束后返回菜单

Android NDK - 未知类型名称 'wchar_t'(在 API 21 上)

Linux Shell .sh,搜索数据库