根据this answer,如果在调用connect时指定了目标地址,则系统将自动选择套接字使用的接口。我正在寻找的是一种简单的方法,在用C或C++调用connect之前知道该接口的名称。我知道这可以用命令route get to $ADDR来完成,但是在程序中调用外部命令似乎有点脏。除了解析路由表或调用route之外,在C/C++中有其他方法可以做到这一点吗?
发布于 2021-12-24 15:47:30
您可以打开netlink套接字并查询路由,然后筛选所需的路由。下面是Linux上的一篇文章,描述了这种方法:
https://www.linuxjournal.com/article/7356
下面是C语言中的一个实现:
https://gist.github.com/javiermon/6272065
它只是需要一些调整,以满足你的需要。
https://stackoverflow.com/questions/70474367
复制相似问题