因此,我试图获取运行程序的机器的局域网IP地址,并将其与通过UDP传递给它的IP地址进行比较。Python在Ubuntu上获取机器的局域网IP地址
然而,当我使用:
print str(socket.gethostbyname(socket.gethostname()))
它返回127.0.0.1这应该是192.168.1.9。
我已经看过了linux机器和它获取lo(loopback)端口的IP地址吗?我不知道到底是什么,但它应该获取eth0的IP地址。
我发现我可以对bash命令“ifconfig eth0”进行子处理,但是会返回一个字符串的大块。我可以把它处理成我需要的东西,但是这将会在一个beaglebone上每秒运行3次,所以我希望它更有效一些。
有没有更好的方法来做到这一点?
我可以只改变gethostname的目标吗?
它为什么瞄准lo口?
感谢您的帮助maners。
如果有人试图做到这一点,他们有一个服务器,将始终有互联网接入有网站http://code.activestate.com/recipes/439094-get-the-ip-address-associated-with-a -network-inter /可以解决问题。但我的服务器不会总是有互联网,所以我不能使用它。 – Poodimizer