根據這個答案,如果呼叫時指定了目標地址,系統將自動選擇套接字要使用的介面connect。我正在尋找的是一種在connect使用 C 或 C 呼叫之前知道該介面名稱的簡單方法。我知道這可以通過命令來完成route get to $ADDR,但是在程式中呼叫外部命令似乎有點臟。除了決議路由表或呼叫之外,還有什么方法可以在 C/C 中做到這一點route?
uj5u.com熱心網友回復:
您可以打開一個 netlink 套接字并查詢路由,然后過濾您需要的路由。這是 Linux Journal 上的一篇文章,描述了這種方法:
https://www.linuxjournal.com/article/7356
這是它的 C 實作:
https://gist.github.com/javiermon/6272065
它只需要根據您的需要進行一些調整。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/394241.html
上一篇:C#套接字-如何正確處理行尾
