美文网首页
关于socket获取IP的问题

关于socket获取IP的问题

作者: 沿哲 | 来源:发表于2020-12-14 08:38 被阅读0次

As is known to all, 通过socket可以获取本机IP

import socket

myhost=socket.gethostname()
myip=socket.gethostbyname(myhost)
myip

但是获取到的IP通常不是实际应用中需要的!

WIN10

CMD中获得的IP



但是根据socket指令获取的...


LINUX

终端获取的IP



根据socket指令获取的...


待解决问题:为什么会这样?

通过gethostbyname_ex指令可以看到本机的所有IP,但是为什么gethostbyname指令显示出的IP并不是我们想要的呢?
通过网上的搜索,我找到了如下的程序可以获得本机的正确IP

import socket

def get_host_ip():
    """
    查询本机ip地址
    :return: ip
    """
    try:
        s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        s.connect(('8.8.8.8', 80))
        ip = s.getsockname()[0]
    finally:
        s.close()

    return ip

if __name__ == '__main__':
    print(get_host_ip())

附一张整体效果图


相关文章

网友评论

      本文标题:关于socket获取IP的问题

      本文链接:https://www.haomeiwen.com/subject/llunmktx.html