如何获取本地IP地址

一、获取本机IP地址

获取本机IP地址的方法具有一定的系统依赖,不同的系统实现方式有所不同。下面我们分别介绍Windows、Linux和Mac OS系统下获取本机IP地址的方法。

1、Windows系统

import socket

def get_local_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

print(get_local_ip())

上面的代码使用Python的socket模块来获取本机IP地址,连接Google的DNS服务器8.8.8.8时,获取本机IP地址。其中,socket.AF_INET表示使用IPv4协议,socket.SOCK_DGRAM表示使用UDP协议。

2、Linux系统

ifconfig

在Linux下,ifconfig命令可以用来查看本机的IP地址。

3、Mac OS系统

ifconfig | grep "inet " | grep -v 127.0.0.1 | awk '{ print $2 }'

在Mac OS下,可以使用ifconfig命令来获取本地IP地址,然后通过grep和awk命令来提取IP地址。

二、拼本地连接IP地址

在使用网络编程时,经常需要获取本地连接IP地址,它是由本机的IP地址和端口号组成的一个唯一标识。下面是Python的示例代码:

import socket

def get_local_addr():
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    s.connect(('8.8.8.8', 80))
    ip, port = s.getsockname()
    s.close()
    return f"{ip}:{port}"

print(get_local_addr())

上面的代码中,首先创建了一个socket对象,然后调用connect()方法连接Google的DNS服务器8.8.8.8。然后通过调用getsockname()方法获取本地IP地址和端口号,并返回一个拼接好的字符串。

三、使用JavaScript和Vue获取本地IP地址

现在,越来越多的Web应用需要获取客户端的IP地址。下面我们分别介绍使用JavaScript和Vue框架来获取本机IP地址的方法。

1、使用JavaScript

使用JavaScript获取本机IP地址的方法非常简单,只需要创建一个UDP连接,然后通过connection属性获取本机IP地址即可:

const udp = new RTCPeerConnection({iceServers: []})
udp.createDataChannel('')
udp.createOffer().then(offer => udp.setLocalDescription(offer))
udp.onicecandidate = evt =>
    t(c => c && c.dispatchEvent(new CustomEvent('rtc:ip', {detail: evt.candidate.candidate.split(' ')[4]})))

上面的代码创建了一个RTCPeerConnection对象,然后创建一个未命名的数据通道和一个offer对象,设置本地SDP,然后获取本机IP地址并触发一个自定义事件。

2、使用Vue

在Vue框架中获取本机IP地址的方法与使用JavaScript相似,但需要先安装webrtc-adapter库:

npm install webrtc-adapter -S

然后,在Vue组件中添加以下代码:

<script>
import adapter from 'webrtc-adapter'

export default {
  mounted () {
    const pc = new window.RTCPeerConnection({ iceServers: [] })
    let ipAddr

    pc.createDataChannel('')
    pc.createOffer()
      .then(offer => pc.setLocalDescription(offer))
      .then(() => new Promise(resolve => { pc.onicecandidate = e => { if (!e.candidate) resolve() } }))
      .then(() => {
        const regex = /([0-9]{1,3}(\.[0-9]{1,3}){3})/
        const candidate = pc.localDescription.candidate
        ipAddr = regex.exec(candidate)[1]

        console.log('**** LOCAL IP ADDRESS: ', ipAddr)
      })
      .catch(error => {
        console.error('**** ERROR: ', error)
      })
  }
}
</script>

上面的代码中,首先创建了一个RTCPeerConnection对象,然后创建一个未命名的数据通道和一个offer对象,设置本地SDP,然后获取本机IP地址。

四、获取本地IP的多个网卡地址

多个网卡是指一台计算机上安装了多个不同的网卡,每个网卡都有一个IP地址。获取本地IP的多个网卡地址时,需要使用Python的socket库和fcntl库。

import socket
import fcntl
import struct

def get_local_ips():
    ips = []
    interfaces = socket.if_nameindex()
    for if_idx in interfaces:
        ifname = if_idx[1]
        if ifname.startswith('lo'):
            continue
        s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        ip = fcntl.ioctl(s.fileno(), 0x8915, struct.pack('256s', ifname[:15].encode('utf-8')))
        ips.append(socket.inet_ntoa(ip[20:24]))
    return ips

print(get_local_ips())

上面的代码中,首先使用if_nameindex()函数获取所有网卡的名称和索引,然后分别获取每个网卡对应的IP地址。

五、获取本机IP地址的命令

在Linux和Mac OS系统下,可以使用ifconfig命令来查看本机的IP地址。

ifconfig

在Windows系统下,可以使用ipconfig命令来查看本机的IP地址。

ipconfig

六、获取本地IP地址失败

实际上,获取本地IP地址是受网络环境和计算机系统等多种因素影响的。如果获取失败,可以尝试使用下面的方法:

  • 确保本机已连接到网络,并且网络正常。
  • 检查计算机防火墙和杀毒软件的设置,有时候它们会禁止获取本机IP地址。
  • 使用不同的获取IP地址的方法,比如使用JavaScript或者命令行。

七、获取本地IP地址程序

下面是一个Python程序,通过socket库实现获取本地IP地址:

import socket

def get_local_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_local_ip())

上面的程序会打印出本机的IP地址。

八、获取本地IP地址Node.js

在Node.js中获取本地IP地址的方法非常简单,只需要使用os库和networkInterfaces()函数即可:

const os = require('os')

function getLocalIP () {
  const interfaces = os.networkInterfaces()
  for (const ifname of Object.keys(interfaces)) {
    const iface = interfaces[ifname]

    for (const alias of iface) {
      if (alias.family === 'IPv4' && !alias.internal) {
        return alias.address
      }
    }
  }

  return '127.0.0.1'
}

console.log(getLocalIP())

上面的代码会打印出本机的IP地址。

原创文章,作者:VSKUL,如若转载,请注明出处:https://www.506064.com/n/332156.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
VSKUL的头像VSKUL
上一篇 2025-01-21 17:30
下一篇 2025-01-21 17:30

相关推荐

  • cmd看地址

    本文将从多个方面详细阐述cmd看地址,包括如何查看本机IP地址、如何查看路由器IP、如何查看DNS服务器IP等等。 一、查看本机IP地址 要查看本机IP地址,首先需要打开cmd窗口…

    编程 2025-04-29
  • 尚硅谷官网地址用法介绍

    尚硅谷是国内一家领先的技术培训机构,提供了众多IT职业的培训,包括Java、Python、大数据、前端、人工智能等方向。其官网地址为http://www.atguigu.com/。…

    编程 2025-04-29
  • Centos7配置静态ip

    本文将详细阐述如何在Centos7系统中配置静态ip。 一、查看网络接口 在配置静态ip之前,我们首先需要查看系统中的网络接口,以确定我们需要配置的网卡是哪一个。 ifconfig…

    编程 2025-04-29
  • Python检测IP连通

    Python是一门强大的编程语言,常用于网络开发、数据分析等领域。IP地址是网络通信的基础,在网络通信中,有时需要检测IP地址是否连通。下面将从多个方面介绍Python检测IP连通…

    编程 2025-04-28
  • Idea2022变更Git地址

    本文将从以下几个方面对Idea2022变更Git地址进行详细阐述: 一、GitHub上修改Git仓库地址 1、登录GitHub,找到需要修改的Git仓库 2、在代码页面点击右上角的…

    编程 2025-04-28
  • Treck TCP/IP Stack 输入验证错误漏洞CVE-2020-11901解析

    本文将对Treck TCP/IP Stack 输入验证错误漏洞CVE-2020-11901进行详细解析,并提供相关代码示例。 一、漏洞背景 Treck TCP/IP Stack是一…

    编程 2025-04-27
  • electron-egg打包后请求地址错误解决方法用法介绍

    本文将从多个方面对electron-egg打包后请求地址错误进行详细阐述,并给出解决方法。 一、electron-egg打包后请求地址错误的表现 在使用 electron-egg …

    编程 2025-04-27
  • PHP获取301跳转后的地址

    本文将为大家介绍如何使用PHP获取301跳转后的地址。301重定向是什么呢?当我们访问一个网页A,但是它已经被迁移到了另一个地址B,此时若服务器端做了301重定向,那么你的浏览器在…

    编程 2025-04-27
  • Python如何判断IP地址合法性

    IP地址是网络通信的基础,因此判断IP地址合法性是编程中常见的问题。Python作为一门强大的编程语言,提供了多种方法来判断IP地址的合法性。 一、判断IP地址格式是否正确 IP地…

    编程 2025-04-27
  • Python处理“该请求的地址无效”的解决方法

    本文将从以下几个方面为大家详细阐述在python中处理“该请求的地址无效”的解决方法。 一、检查URL地址是否正确 当我们在使用Python发送网络请求时,如果URL地址不正确,就…

    编程 2025-04-27

发表回复

登录后才能评论