[Java]一个WiFi管理器(获取WiFi连接的网关的ip和信息)和热点管理器(获取连接本机的热点的设备的ip、MAC和信息)

本文介绍如何在Java中获取WiFi连接的网关IP和热点连接设备的IP、MAC信息,通过Windows cmd命令行操作,实现WiFiManager和HotspotManager类,用于局域网数据传输项目的辅助工具。
摘要由CSDN通过智能技术生成

注:笔者未学习过计算机网络相关的知识,只是在做socket通信项目时接触到这块知识,对一些名词概念使用不当请多多包涵,本篇文章的目的为提供一个笔者原创的Java网络信息获取工具类,并在一定程度上对这个领域的小白指北。

应用场景

笔者在做一个电脑<-->手机之间进行局域网数据传输的项目,这时就需要调用Java中的socket类,而socket的初始化需要用到对方的ip和端口(当对方为服务端时)。换言之,对于电脑来说,在“电脑开热点手机连接”和“手机开热点电脑连接”两种情况下,我都需要知道手机的ip地址。

在手机端,Android提供了封装好的一个WiFiManager类,通过它能很容易的获取自己和对方的WiFi信息,而通过对“/proc/net/arp”的读取可以得到热点信息,在网上很容易能找到关于它们的代码。

在电脑端,我们可以在Windows的UI界面中看到WiFi的名称和连接热点的设备的名称和ip地址(在“设置->网络和Internet->移动热点”中),但是无法获取WiFi的网关(路由器)的地址。更大的问题是,Java不提供任何像Android中WiFiManager类那样的类,至少我在网上没查到。

Java这条路就算断了,唯一的方向就只有Windows中无敌却又难用的cmd了。笔者通过大量的搜索资料和尝试命令,终于把需要的信息通过cmd获取到了。

 

为了方便理解,下面的本机(my)指的都是电脑,本机的ip地址称为myIP,与本机进行连接的设备(如手机)称为连接者(connecter),其ip地址称为connecterIP

相关的cmd命令:

一.WiFi部分

1.获取本机ip:在cmd中使用“ipconfig”命令,“无线局域网适配器 WLAN:”下的“IPv4 地址 . . . . . . . . . . . . :”栏即为本机ip

2.获取连接的WiFi名称:使用“netsh wlan show interfaces”命令,“SSID”栏即为WiFi名称。

3.获取连接者ip:使用“ARP -a”命令,找到“接口:”后的ip地址为本机ip的部分,下面与本机ip属于同一网段且物理地址不为“ff-ff-ff-ff-ff-ff”的即为连接者ip

二.热点部分

1.获取本机ip:在cmd中使用“ipconfig”命令,“无线局域网适配器 本地连接”下的“IPv4 地址 . . . . . . . . . . . . :”栏即为本机ip

2.获取连接者ip:使用“ARP -a”命令,找到“接口:”后的ip地址为本机ip的部分,下面与本机ip属于同一网段且物理地址不为“ff-ff-ff-ff-ff-ff”的即为连接者ip

3.获取连接者的名称:使用“tracert connecterIP”命令(connecterIP为第二步获得的连接者

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值