Python获取本地IPv4

背景

python实现了一个tcp服务端,然而每次接不同外网的时候,IPv4是会发生变动的,所以无论是硬编码还是写成配置文件都是不方便的,那么直接用代码获取运行程序时本地的IPv4自然就成了需求

代码

import socket

ipv4s=socket.gethostbyname_ex(socket.gethostname())[2]
print(ipv4s)

结果

注意

得到的结果是一个列表,如果你本机装了虚拟机等,可能还会有其他虚拟的ipv4,这就需要你再做其他算法进行甄别了

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用 Python 的 `socket` 库来获取本地 IP 地址。 你可以使用 `socket.gethostbyname(socket.gethostname())` 来获取本地主机名对应的 IP 地址。 例如: ```python import socket local_ip = socket.gethostbyname(socket.gethostname()) print(local_ip) ``` 运行上面的代码将会输出你的本地 IP 地址。 注意,如果你有多个网络接口(例如有线和无线网络接口),这个方法可能会返回其中一个接口的 IP 地址,而不是所有接口的 IP 地址。如果需要获取所有接口的 IP 地址,可以使用类似的方法,例如使用 `netifaces` 库来获取所有网络接口的信息。 ### 回答2: 在Python获取本地IP地址可以使用socket模块来实现。下面是一个简单的示例代码: ```python import socket def get_local_ip(): # 创建一个UDP套接字 # AF_INET表示IPv4地址族,SOCK_DGRAM表示数据报套接字 sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) try: # 连接一个不存在的IP地址和端口,用于获取本地IP地址 sock.connect(('10.255.255.255', 1)) # 获取本地IP地址 local_ip = sock.getsockname()[0] finally: sock.close() return local_ip if __name__ == "__main__": ip = get_local_ip() print("本地IP地址为:", ip) ``` 在这个示例中,我们创建了一个UDP套接字并连接到一个不存在的IP地址和端口。然后,通过调用`getsockname()`方法来获取本地IP地址。最后,将获取到的IP地址打印出来。 需要注意的是,不同网络环境下,获取到的本地IP可能会有所不同。如果网络设置中存在多个网卡或虚拟机等,可能会返回多个IP地址。这时候需要根据具体需求进行处理。 ### 回答3: 在Python中,可以使用`socket`模块来获取本地IP地址。以下是一个简单的示例代码: ```python import socket def get_local_ip(): # 创建一个socket对象 s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) try: # 连接一个外部的IP地址和端口 s.connect(("8.8.8.8", 80)) # 获取本地IP地址 local_ip = s.getsockname()[0] finally: # 关闭socket连接 s.close() return local_ip # 调用函数获取本地IP地址 ip = get_local_ip() print("本地IP地址:", ip) ``` 在上面的代码中,我们首先创建了一个socket对象,并指定了IPv4地址族和UDP协议。然后,我们通过使用`connect`方法连接到一个外部的IP地址和端口(在这里使用了Google的公共DNS服务器8.8.8.8的IP地址和端口80)。 当我们成功建立连接后,通过调用`getsockname()`方法获取本地IP地址以及其他相关信息。最后,关闭socket连接,并将获取到的本地IP地址返回。 注意:由于网络环境的不同,可能获取到的本地IP地址并不是固定的,可能会有一定的变动。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值