3

我正在用 Python 编写一个简单的 RPC 服务器,用于实验室环境中的内部网络。当我使用以下代码创建服务器时:

server = SimpleXMLRPCServer(("", 8000))

服务器似乎在侦听多个可用接口(即本地主机和计算机的公共 IP 地址),就像我想要的那样。

我的服务器脚本是否有一种简单且可移植的方式来确定它正在侦听的 IP 地址?

它通常会在安装了动态地址和 python 2.6 的随机 Windows 机器上运行,如果我的服务器可以在启动时打印出某种“Listening on address1:port address2:port ...”消息会很有帮助。我已经看到与获取客户端地址相关的其他问题,但我正在寻找服务器地址。

4

1 回答 1

1
import socket
print([(s.connect(('8.8.8.8', 80)), s.getsockname()[0], s.close()) for s in [socket.socket(socket.AF_INET, socket.SOCK_DGRAM)]][0][1])

我发现这个页面有几个其他有用的方法: Finding local IP addresses using Python's stdlib

于 2014-05-09T23:59:05.100 回答