问题

写接口服务中需要知道本机服务器的ip, 之前有写一版,在生产机上是能够正常得到ip的,到测试环境的时候就出问题了,得到的结果是127.0.0.1

初始获得ip地址代码为:

import socketdef get_host_ip():hostname = socket.gethostname()ip = socket.gethostbyname(hostname)return ip

本机IP与127.0.0.1及localhost的区别

127.0.0.1

  • 环回地址是主机用于向自身发送通信的一个特殊地址。同一台主机上的两项服务若使用环回地址而非分配的主机地址,就可以绕开TCP/IP协议栈的下层。

  • IPv4的环回地址为:127.0.0.0到127.255.255.255都是环回地址

  • 当操作系统初始化本机的TCP/IP协议栈时,设置协议栈本身的IP地址为127.0.0.1(保留地址),并注入路由表

127.0.0.1是保留地址之一,来检验本机TCP/IP协议栈,ping 127.0.0.1一般作为测试本机TCP/IP协议栈正常与否的判断之一。

localhost

localhost首先是一个域名,也是本机地址,它可以被配置为任意的IP地址。不过通常情况下都指向:(如下)

  • IPv4:表示 127.0.0.1

  • IPv6:表示 [::1]

本机IP

本机IP,可以理解为本机有三块网卡:

  • 一块网卡叫做loopback(虚拟网卡)
  • 一块叫做ethernet(有线网卡)
  • 一块叫做wlan(你的无线网卡)

联网,网卡传输,受防火墙和网卡限制

解决方法

获取本机IP有其它的方法:

import os
import socketgw = os.popen("ip -4 route show default").read().split()
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect((gw[2], 0))
ipaddr = s.getsockname()[0]
gateway = gw[2]
host = socket.gethostname()print("IP:", ipaddr, " GW:", gateway, " Host:", host)

或者

import os
import sockets = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("8.8.8.8", 80))
ip = s.getsockname()[0]print("IP:", ip)

参考

  • https://forums.raspberrypi.com/viewtopic.php?t=188615#p1187999
  • https://blog.csdn.net/msdnwolaile/article/details/51278867
  • https://stackoverflow.com/questions/55296584/getting-127-0-1-1-instead-of-192-168-1-ip-ubuntu-python

python获取本机IP相关推荐

  1. 在Linux上利用python获取本机ip

    下面介绍在Linux上利用python获取本机ip的方法. 经过网上调查, 发现大致有两种方法, 一种是调用shell脚本,另一种是利用python中的socket等模块来得到,下面是这两种方法的源码 ...

  2. python获取本机 ip地址、mac地址(物理地址)、计算机名、硬盘序列号、CPU序列号、主板序列号、bios序列号、bios uuid号

    文章目录 python获取本机IP地址.mac地址(物理地址).计算机名 物理地址 计算机名.ip地址 硬盘序列号 CPU序列号 主板序列号 bios序列号 bios uuid号 python获取本机 ...

  3. python 获取本机IP的三种方式

    python获取本机IP的方式 第一种: #!/usr/bin/python import socket import fcntl import struct def get_ip_address(i ...

  4. python 获取本机IP地址

    方法一: 通常使用socket.gethostbyname()方法即可获取本机IP地址,但有时候获取不到(比如没有正确设置主机名称),示例代码如下: import socket# 获取本机计算机名称 ...

  5. Python获取本机IP地址的几种方式

    目录 1.使用专用网址 2.使用自带socket库 3.使用第三方netifaces库 1.使用专用网站 获取的是公网IP. 网址:http://myip.ipip.net 代码: import re ...

  6. Python | 获取本机IP地址的几种方式

    1.使用自带socket库 获取局域网IP import socket # 函数 gethostname() 返回当前正在执行 Python 的系统主机名 res = socket.gethostby ...

  7. python获取本机IP的方法

    方法一. os.popen('ip addr show eth0').read().split("inet ")[1].split("/")[0] 方法二. o ...

  8. python获取mac、计算机id_python 获取本机IP、mac地址、计算机名的简单示例

    这篇文章主要为大家详细介绍了python 获取本机IP.mac地址.计算机名的简单示例,具有一定的参考价值,可以用来参考一下. 对python获取本机IP.mac地址.计算机名感兴趣的小伙伴,下面一起 ...

  9. python 提取网关信息_python:使用netifaces模块获取本机IP网关等信息

    python获取本机IP有很多种方法,可每种方法都有局限性. 使用netifaces模块获取本机IP网关等信息,需要安装netifaces模块,不管windows还是linux都可以通用. 一.程序: ...

  10. qt获取本机全部ipv4_QT5下获取本机IP地址、计算机名、网络连接名、MAC地址、子网掩码、广播地址...

    获取主机名称 /* * 名称:get_localmachine_name * 功能:获取本机机器名称 * 参数:no * 返回:QString */ QString CafesClient::get_ ...

最新文章

  1. 使用Linq读取资源文件
  2. java聊天室程序_Java简易聊天室程序socket
  3. Graph Normalization (GN):为图神经网络学习一个有效的图归一化
  4. 可变大小区(Variable-Size Extents)
  5. how is OData url select option implemented in the backend
  6. .Net Core功能开关实战
  7. 【POJ - 1087】A Plug for UNIX(建图,网络流最大流)
  8. 正则表达式 判断 连号如“123456”、同号如“888888”、连同号如“112233”“222333”...
  9. java栈和队列_栈和队列的面试题Java
  10. 听力技巧-4大难点讲析
  11. 从源码解析LinkedList集合
  12. 指示灯亮着,但是右边的数字小键盘不可用
  13. 基于yolov5与Deep Sort的流量统计与轨迹跟踪
  14. Android 文字转语音之TextToSpeech
  15. 用SPSS做数据分析时遇到的几个小问题——解决方法!
  16. LEBERT:Lexicon Enhanced Chinese Sequence Labelling Using BERT Adapter
  17. 新浪微博短网址t.cn 短链接生成9.28
  18. java计算机毕业设计英语学习网站设计与实现MyBatis+系统+LW文档+源码+调试部署
  19. Vue - 路由导航守卫控制访问权限,设置 localStorage 过期时间
  20. 扩展log4j2日志归档功能预研

热门文章

  1. 动态显示姓名--汇编语言版
  2. Python—猫眼电影票房爬虫实战 轻松弄懂字体反爬!
  3. VB 语言介绍以及VBA、宏(Macro)的关系
  4. 本科论文查重率多少?
  5. 保研杂记(上)心灵鸡汤篇
  6. python爬虫爬取雪球网_Python爬虫:Selenium+ BeautifulSoup 爬取JS渲染的动态内容(雪球网新闻)...
  7. Pandas 库之 DataFrame
  8. 打开程序员心理B面,这些黑红话题他们亲自回应丨1024特辑
  9. 每日新知——MySQL索引类型及创建
  10. IDEA环境下yml文件不显示小绿叶(不被识别为配置文件)