我试图获取程序运行的机器的局域网IP地址,并将其与通过UDP传递的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先生。