Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
可靠的跨平台方法,无需额外的库即可发现python中所有本地接口的ip地址_Python_Cross Platform_Ip Address - Fatal编程技术网

可靠的跨平台方法,无需额外的库即可发现python中所有本地接口的ip地址

可靠的跨平台方法,无需额外的库即可发现python中所有本地接口的ip地址,python,cross-platform,ip-address,Python,Cross Platform,Ip Address,我想这个问题说明了一切。我想要一种在python中发现本地接口ip地址的方法 我在这个问题上见过很多变体(例如,但似乎没有一个完全涵盖所有的基础(例如,我引用的一个问题是如何找到“本地”IP地址,而不是所有的) 总结一下要求: 我希望它能够可靠地跨平台运行 我希望它不需要额外的库(例如,我知道netifaces) 我希望它能够发现所有的本地接口,而不仅仅是一些 不需要从任何接口发送数据包 这有点苛刻,我意识到:-)。关键是,这是一个在各种情况下都会出现的常见问题,而且应该有一个“复制和粘贴”解决

我想这个问题说明了一切。我想要一种在python中发现本地接口ip地址的方法

我在这个问题上见过很多变体(例如,但似乎没有一个完全涵盖所有的基础(例如,我引用的一个问题是如何找到“本地”IP地址,而不是所有的)

总结一下要求:

  • 我希望它能够可靠地跨平台运行
  • 我希望它不需要额外的库(例如,我知道netifaces)
  • 我希望它能够发现所有的本地接口,而不仅仅是一些
  • 不需要从任何接口发送数据包
  • 这有点苛刻,我意识到:-)。关键是,这是一个在各种情况下都会出现的常见问题,而且应该有一个“复制和粘贴”解决方案(即,我可以在代码中插入一个片段,以跨平台提供此功能)

    编辑


    作为参考,还有一个问题,它假定发送数据包

    如果你能在香草巨蟒中做这样的事情,我想他不会费心做网脸…@antlersoft我知道你来自哪里。我很确定,使用香草python没有简单的方法可以做到这一点。我设想的是一个代码片段,它使用多种方法,在适当的情况下捕获错误。可能又长又脏,但可以剪切粘贴。netifaces sortof这样做的事实(网站没有说明它是否在Windows上工作,我也没有尝试过)让我相信这是可能的。事实上,每个操作系统的内核都有这些信息。在我看来,必须有一种方法来做一些简单的事情,比如枚举地址。除非我弄错了,否则netifaces使用本机C库来提供此功能,它使用特定于平台的系统调用。因为Python是为了抽象掉那些平台细节而设计的,所以尝试复制他的#ifdef'中包含的所有平台逻辑将是一件非常麻烦的事情s@antlersoft我不否认这将是一件苦差事,但它似乎是可以做到的。例如,我正在考虑使用fcntl(这在我提到的线程中以一种方式涉及),看看它是否/在多大程度上起作用,然后可能使用gethostbyname解决方案,获取该信息的联合,等等……如果您放弃了“可靠的跨平台”需求,当然,您可以更轻松地做到这一点:)。