展开目录
找树莓派的内网ip
arp树莓派
X
陈尼玛的博客
记录开发生涯的踩坑经历,用时间来验证成长
加载中

本文说的是只有主板情况下找ip。

使用arp命令:

arp -a

image.png

轻而易举就可以找到了。

如果子网内没有这个记录,而你确定树莓派肯定已经在这个子网内,那么首先使用子网ip扫描工具快速扫一遍在线主机,然后再使用arp命令搜索树莓派的ip。


以下是我以前使用udp的方式寻找的,现在回过头来发现这种方法绕路了,毕竟当年图样。


我的想法是通过udp广播的方式,流程如下: 0. 树莓派开机启动后监听udp的某个端口 0. 让同一个子网内的自己的电脑每隔一秒发出广播消息 "where are you" 0. 树莓派收到消息"where are you"后,响应"raspberry" 0. 自己的电脑收到 "raspberry" 后输出发送方的ip,即树莓派ip

nodejs代码

树莓派内部回复脚本<需要设为开机启动>

/**
 树莓派广播接收端
 用于外部获取树莓派内网ip
 */

var dgram=require(dgram);
var s = dgram.createSocket(udp4);
s.bind(1234, function(){
  s.setBroadcast(true);
});
s.on(message,function(msg,rinfo){
  if(msg+!==where are you)return;
  var buf=new Buffer(raspberry);
  s.send(buf,0,buf.length,rinfo.port,rinfo.address);
});

外部广播询问脚本

/**
 树莓派广播发送端
 用于外部获取树莓派内网ip
 */

var dgram=require(dgram);
var s = dgram.createSocket(udp4);
s.bind(1234, function(e) {
  s.setBroadcast(true);
  setInterval(function(){
    var ni=require(os).networkInterfaces();
    for(var id in ni) ni[id].map(function(nw){
      if(nw.family===IPv6)return;
      var ip=nw.address.split(.);
      var buf=new Buffer(where are you);
      var mask=nw.netmask.split(.);

      // 网络地址
      var netaddress=mask.map(function(c,i){
        return c&ip[i];
      });

      var broadcast=netaddress.map(function(c,i){
        return c|(0xff^mask[i]);
      });

      s.send(buf,0,buf.length,1234,broadcast.join(.));
    });
  },1000);
});
s.on(message,function(msg,rinfo){
  if(msg.toString()===raspberry){
    console.log(找到内网树莓派ip:,rinfo.address);
    process.exit();
  }
});

相关文档

暂无

随便看看

  1. windows电脑防止自动休眠

  2. 记一次nodejs内存泄漏的排查经历

  3. css3自定义滚动条样式

  4. nginx 子域名对应文件夹

  5. sass变量和继承类写法

  6. mac 终端运行后台程序如何在终端关闭时继续运行

  7. ios13 vpn 能连接但不能传数据问题解决

  8. git删除远程分支

  9. python 用摄像头拍照并写入文件

  10. heroku登陆cli

  11. mongodb 批量修改字段语句

  12. git配置服务端支持http认证

  13. git 设置代理服务器

  14. ssl 证书生成方式

  15. mongodb2.4 添加用户

  16. 随机取某个概率区间的代码

  17. 配置mysql ssl连接

畅言模块加载中