获取当前设备的IP

背景:

  在本地使用自带webUI的项目时,需要制定webUI的访问地址。

  • 一般本地访问使用:127.0.0.1
  • 配置为可以从其他设备访问时,需要指定当前设备的IP,或者指定为0.0.0.0

  例如:使用locust的时候,因为某些特殊原因,我的电脑名称中有中文字符。当指定webUI访问地址指定为0.0.0.0时,locust webUI 会调用的 pywsgi.WSGIServer 服务。
在这里插入图片描述
  初始化启动时,因为指定的IP时0.0.0.0, 会调用socket.getfqdn()方法。由于电脑名为中文,会由于默认的ascii编码方式,导致抛出异常。
在这里插入图片描述
  从代码逻辑上讲,我们指定了0.0.0.0后,会先调用socket.gethostname(),然后通过设备名称获取IP地址。本质上还是重新指定IP。

如果我们一开始就指定为设备的IP,会更有效率。

获取设备IP的方法:

  • 以下方法的使用都是基于当前设备已经连接网络。

方法一:

使用 socket 方法:

def current_ip():ip = Noneclient = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)client.connect(('8.8.8.8', 80))ip,port  = client.getsockname()print(f'ip: {ip}')return ip

方法二:

使用 psutil 方法:

  1. kind='inet4'指定过滤出IPv4的连接

  2. 通过连接类型SOCK_STREAM、状态不为None、连接的远端IP不为空且不为127.0.0.1

    def current_ip():import psutilip = Noneinterfaces = psutil.net_connections(kind='inet4')for interface in interfaces:if interface.type == socket.SocketKind.SOCK_STREAM and interface.status is not None and bool(interface.raddr):if interface.raddr.ip != "127.0.0.1":print(interface.laddr.ip)ip = interface.laddr.ipbreakreturn ip
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/409867.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

交通流量预测:T-GCN A Temporal Graph Convolutional Network for Traffic Prediction

摘要 为了同时捕捉时空相关性,将图卷积网络(GCN)和门控递归单元(GRU)相结合,提出了一种新的基于神经网络的流量预测方法–时态图卷积网络(T-GCN)模型。具体地,GCN用于学习复杂的拓扑结构以捕获空间相关性,而门控递归单元用于学习…

【MySQL】数据处理之增删改

文章目录 一、增加(插入)INSERT INTO...VALUES(...,...)VALUES的方式添加情况一:为表的所有字段按默认顺序插入数据情况二:为表的指定字段插入数据情况三:同时插入多条记录 将查询结果插入到表中 二、修改(…

界面设计工具有哪些?看看这5个!

即时设计 - 可实时协作的专业 UI 设计工具即时设计是一款支持在线协作的专业级 UI 设计工具,支持 Sketch、Figma、XD 格式导入,海量优质设计资源即拿即用。支持创建交互原型、获取设计标注,为产设研团队提供一站式协同办公体验。https://js.d…

tcpdump常用参数以及wireshark密文解密

tcpdump常用参数以及wireshark密文解密 文章目录 一、tcpdump命令和常用参数二、在wireshark中协议解析 tcpdump常用参数 一、tcpdump命令和常用参数 tcpdump常用命令:tcpdump -i eth0 src host 11.6.224.1 and udp port 161 -s 0 -w 161.pcap (161为sn…

四、任意文件读取漏洞

一、介绍 解释:任意文件读取漏洞就其本身来说就是,攻击者绕过网站防御者设置的防御,读取到了正常使用者不应该读取到的内容。网站开发者使用不同的语言,任意文件读取漏洞利用方式就不同。 二、不同开发语言的不同漏洞点 1.PHP …

快速更改flutter已有项目的项目名称和id等

如果你使用了别人已有的仓库模板或者想更改现有项目的名称,是一件非常繁琐的工作,需要修改全平台的文件还是相当麻烦的,所以这里推荐一个小工具,可以帮助大家快速实现更改项目名称的目的,这个工具地址:rena…

threejs中点击物体事件

// 定义点击事件 document.addEventListener(click, event > {// 鼠标控制对象const mouse new THREE.Vector2(); // 得到鼠标相对于容器的坐标mouse.x ( event.clientX / window.innerWidth ) * 2 - 1;mouse.y - ( event.clientY / window.innerHeight ) * 2 1;// 执行…

【Maven】009-Maven 简单父子工程搭建

【Maven】009-Maven 简单父子工程搭建 文章目录 【Maven】009-Maven 简单父子工程搭建一、需求说明1、结构2、第三方库 二、工程搭建1、父工程第一步:创建父工程第二步:引入公共依赖 lombok 和管理 hutool 依赖版本 2、公共子模块第一步:创建…

vue2 el-table行悬停时弹出提示信息el-popover

实现方法&#xff0c;用到了cell-mouse-enter、cell-mouse-leave两个事件&#xff0c;然后在表格的首列字段中&#xff0c;加个el-popover组件&#xff0c;当然你也可以选择在其他字段的位置来显示提示框&#xff0c;看自己的需求了。 示例代码&#xff1a; <el-table cell…

2024年【危险化学品生产单位主要负责人】免费试题及危险化学品生产单位主要负责人实操考试视频

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 危险化学品生产单位主要负责人免费试题考前必练&#xff01;安全生产模拟考试一点通每个月更新危险化学品生产单位主要负责人实操考试视频题目及答案&#xff01;多做几遍&#xff0c;其实通过危险化学品生产单位主要…

rust跟我学三:文件时间属性获得方法

图为RUST吉祥物 大家好,我是get_local_info作者带剑书生,这里用一篇文章讲解get_local_info是怎样获得杀毒软件的病毒库时间的。 首先,先要了解get_local_info是什么? get_local_info是一个获取linux系统信息的rust三方库,并提供一些常用功能,目前版本0.2.4。详细介绍地址…

微信小程序防止截屏录屏

一、使用css添加水印 使用微信小程序原生的view和css给屏幕添加水印这样可以防止用户将小程序内的隐私数据进行截图或者录屏分享导致信息泄露&#xff0c;给小程序添加一个水印浮层。这样即使被截图或者拍照&#xff0c;也能轻松地确定泄露的源头。效果图如下&#xff1a; 代码…