【发布时间】:2010-10-06 15:53:18
【问题描述】:
我正在编写一个 C 库,其中涉及告诉子网上的其他计算机向我发送消息。因此我必须向他们宣布我的 IP 地址。这个库应该可以在 Linux、OS X 和 Windows 上运行。目前我主要考虑 POSIX 层。
鉴于一台计算机可以有多个地址(例如,如果它有多个网络接口),
找到我的默认 IP 地址的最佳方法是什么(例如,在最简单的最常见的计算机与子网连接的情况下。)目前我正在循环浏览系统网卡使用
getifaddrs并返回第一个关联的网卡(优先于非环回),但我认为这可能还不够。什么是允许库用户选择发送接口的好 API?我假设对计算机的 NIC 和 IP 进行某种枚举,然后按名称选择 NIC 并找到其 IP。不过,从用户的角度来看,这似乎相当复杂。给定子网上另一台计算机的 IP,也许有某种方法可以通过网络掩码确定系统到子网的路由?不过,我不知道该怎么做。
对于 2,我们最终可以假设可能有一个 GUI 或命令行选项允许用户选择 NIC,但总的来说,我想让它尽可能简单地自动告诉其他计算机如何引导 UDP给它发消息。
任何意见表示赞赏,谢谢!
【问题讨论】:
标签: c networking posix