【2023亲测可用】JS 获取电脑本地IP 和 电脑网络IP(外网IP|公网IP)

本文介绍了如何通过CMD命令获取电脑本地的IP地址,以及使用JavaScript代码和不同网络服务(太平洋网、搜狐、ipify)来获取电脑的外网IP地址。同时提到了JS获取本地IP的RTCPeerConnection方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、了解:电脑本地的IP地址(内网IP)和电脑本机在网络上的IP地址(外网IP|公网IP)

在运行窗口输入“cmd”,在弹出的界面里输入“ipconfig/all”。弹出的数据中,IPv4地址,就是电脑本地的IP地址。

电脑本地的IP地址,实际上是由路由器分配的,大多数家庭路由器都会默认开启DHCP功能,这个IP地址可能会发生变动。如果用户需要查询电脑本机在网络上的IP地址,就需要使用其他方法来查询。

最简单的方法是在搜索软件内输入“本机IP地址”。本机IP地址是用户电脑暴露在网络中的IP地址。


2、JS 获取电脑本地的IP地址:192.168.1.80

function getIP(callback) {
  let recode = {};
  let RTCPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection;
  if (!RTCPeerConnection) {
    let win = iframe.contentWindow;
    RTCPeerConnection = win.RTCPeerConnection || win.mozRTCPeerConnection || win.webkitRTCPeerConnection;
  }
  //创建实例,生成连接
  let pc = new RTCPeerConnection();
  // 匹配字符串中符合ip地址的字段
  function handleCandidate(candidate) {
    let ip_regexp = /([0-9]{1,3}(\.[0-9]{1,3}){3}|([a-f0-9]{1,4}((:[a-f0-9]{1,4}){7}|:+[a-f0-9]{1,4}){6}))/;
    let ip_isMatch = candidate.match(ip_regexp)[1];
    if (!recode[ip_isMatch]) {
      callback(ip_isMatch);
      recode[ip_isMatch] = true;
    }
  }
  //监听icecandidate事件
  pc.onicecandidate = (ice) => {
    if (ice.candidate) {
      handleCandidate(ice.candidate.candidate);
    }
  };
  //建立一个伪数据的通道
  pc.createDataChannel('');
  pc.createOffer((res) => {
    pc.setLocalDescription(res);
  }, () => {});

  //延迟,让一切都能完成
  setTimeout(() => {
    let lines = pc.localDescription.sdp.split('\n');
    lines.forEach(item => {
      if (item.indexOf('a=candidate:') === 0) {
        handleCandidate(item);
      }
    })
  }, 1000);
}

getIP(function(ip){
  console.log("得到的本地IP :" + ip); // 192.168.1.80
});

3、通过太平洋网获取电脑在网络上的IP地址 

太平洋文档: 太平洋网络IP地址查询Web接口  (多种方式,可根据自己需要调用)

<body>
 <script>
    function ipJson(ipJson) {
      console.log('获取到的网络IP',ipJson);
      //可以把结果存在window上,方便调用
      window.ipJson=ipJson;
    }
  </script>
  <script src="//whois.pconline.com.cn/ipJson.jsp?callback=ipJson" type="text/javascript"></script>
</body>

 访问三方网站链接报403_smart_dream的博客-CSDN博客

 4、通过搜狐三方接口获取的IP:不知道为什么我获取的是127.0.0,放弃了。

有文档说:搜狐的需要连接外网才能获取IP,已连接外网获取的还是127.0.0。

<script src="http://pv.sohu.com/cityjson?ie=utf-8"></script>  
<script type="text/javascript">  
console.log('搜狐获取到的IP',window.returnCitySN);
</script>

 5、通过ipify网获取电脑在网络上的IP地址 (只有ip地址,没有地区)

官方文档:   ipify - A Simple Public IP Address API

  <script type="application/javascript">
    function getIP(json) {
      console.log('ipify获取到的网络IP',json.ip);
    }
  </script>

  <script type="application/javascript" src="https://api.ipify.org?format=jsonp&callback=getIP"></script>

### 安装 GTSAM 库 #### 准备工作 为了确保安装过程顺利,在开始之前需要更新系统的包列表并升级已有的软件包: ```bash sudo apt update && sudo apt upgrade -y ``` #### 方法一:通过 APT 安装预编译版本 对于 Ubuntu 20.04 用户来说,最简单的方法是从官方仓库直接安装 GTSAM 的二进制文件[^3]。 ```bash sudo apt install ros-noetic-gtsam ``` 这将自动处理所有的依赖关系,并完成 GTSAM安装。此方法适用于不需要最新功能或修改源代码的情况。 #### 方法二:从源码构建 GTSAM 如果希望获得最新的特性或是对性能有更高要求,则可以选择从 GitHub 上克隆 GTSAM 源码来手动编译[^1]。 ##### 下载源码 访问 [GTSAM GitHub 页面](https://github.com/borglab/gtsam),点击 "Code" 后选择下载 ZIP 文件或者使用 Git 命令行工具获取最新版源码: ```bash git clone https://github.com/borglab/gtsam.git ~/gtsam cd ~/gtsam ``` ##### 编译配置 创建一个新的构建目录并将当前路径切换到其中: ```bash mkdir build && cd build cmake .. make -j$(nproc) ``` 这里 `-j$(nproc)` 参数用于加速多核处理器上的编译速度;`cmake ..` 中可以加入额外参数来自定义安装位置或其他选项,比如启用 TBB 支持以提高计算效率[^5]。 ##### 安装库文件 完成后即可执行安装命令: ```bash sudo make install ``` 此时应能看到 `/usr/local/lib/` 路径下新增加了 `libgtsam.so.*` 动态链接库文件。为了让系统识别新添加的共享库,还需要刷新缓存: ```bash sudo ldconfig ``` #### 验证安装成果 可以通过编写简单的测试程序确认 GTSAM 是否正常工作。下面是一个基本的例子,用来求解线性方程组 Ax=b: ```cpp #include <iostream> #include <gtsam/inference/Symbol.h> #include <gtsam/nonlinear/NonlinearFactorGraph.h> #include <gtsam/nonlinear/GaussNewtonOptimizer.h> int main() { using namespace gtsam; NonlinearFactorGraph graph; Values initialEstimate; // Add factors here... GaussNewtonParams parameters; parameters.setVerbosity("ERROR"); auto optimizer = GaussNewtonOptimizer(graph, initialEstimate, parameters); Values result = optimizer.optimize(); std::cout << "Final Result:\n" << result << "\n"; } ``` 保存上述代码至 `.cpp` 文件后,按照常规流程编译运行之。若有任何错误提示,请仔细检查环境变量设置以及头文件路径是否正确。
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

smart_dream

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值