使用C++和Linux获取我的系统的逻辑地址

0 c++ linux ip-address

请建议如何使用C++和Linux获取我的系统的IP地址(逻辑地址).

geo*_*car 8

"逻辑地址"没有意义.您要么需要一个接口地址(在机器看到的同一本地网络上托管的IP),要么您需要面向公众的Internet地址(主机将在此计算机连接到它们时看到的IP地址).如果机器直接连接到Internet,IP地址将只相同,这通常是不正确的.

其次,Linux主机可以(并且确实)有多个接口,因此哪个接口同样重要.它可能与路由相关(在这种情况下,它取决于目的地),或者它可能使用策略路由(再次:将取决于实际流量).

第三:Linux主机可能有多个地址.也就是说,系统管理员可以通过使用子接口(例如ifconfig eth0:2 ...)或通过简单地添加辅地址(例如ip addr add ip dev eth0)来将多个IP地址绑定到接口.

这就是为什么你最好的选择是告诉用户你想做什么,并要求用户给你正确的信息,或者只是尝试建立联系,并依靠系统来做正确的事情.

对于您实际需要IP地址的少数情况(例如,如果您正在实施FTP客户端),专门的方法将是正确的方法(在FTP客户端案例中:使用getsockname()控制通道上的结果).了解您认为自己需要IP地址的原因(以及您拥有的信息)将有助于您获得更好的答案.