【问题标题】:Why does socket.gethostbyname(socket.gethostname) binds only to local ip address?为什么 socket.gethostbyname(socket.gethostname) 只绑定到本地 IP 地址?
【发布时间】:2020-06-27 16:13:58
【问题描述】:

我正在编写一个套接字程序来创建一个简单的服务器。 当我写ip = socket.gethostbyname(socket.gethostname()) 然后我打印 ip 它打印127.0.1.1 为什么这种情况不断发生?
我的设备已连接到移动热点连接,但 IP 地址仍然是本地主机。
我正在使用 ubuntu 19.04 操作系统

【问题讨论】:

    标签: python sockets ubuntu localhost ip-address


    【解决方案1】:

    问题是主机有多个接口。使用真正的 DNS 或仔细手写的 /etc/host 文件不是问题,因为系统会在那里查找翻译。但是根据配置,主机名可以绑定到所有可用的接口,包括环回接口。并且gethostbyname 按自己的顺序返回这些接口中第一个的地址。

    为了确保这一点,您应该使用gethostbyname_ex,它返回所有接口的列表,并且除了环回接口之外,您还应该找到已连接的hostspot。

    【讨论】:

    • 谢谢,这是为我做的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-22
    • 2021-07-02
    • 2018-03-27
    • 2012-03-14
    • 2012-06-15
    • 1970-01-01
    相关资源
    最近更新 更多