我希望在连接到wifi网络时,在运行我的应用程序的手机上获取用户的本地IPv4地址。使用以下代码:
WifiManager wm = (WifiManager) getApplicationContext().getSystemService(WIFI_SERVICE);
String ip = Formatter.formatIpAddress(wm.getConnectionInfo().getIpAddress());
hostname = ip;
我可以得到一些接近IPv4地址的信息,但与命令行中的IPv4地址相比,它并不完全相同。有更好的办法吗?我知道formatIpAddress已被弃用,但在我找到获取IPv4地址的方法之前,我暂时不太担心这个问题。
编辑:
我发现手机wifi设置中的ip地址是我在使用建议的解决方案获取ip地址时得到的。有没有办法在ip配置客户端获取ip地址?
下面的代码遍历它拥有的所有接口,然后打印接口的IPv4、IPv6和mac地址。对于局域网IP地址,你可以使用一个函数,如果IP地址是本地地址,它将返回true。
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.net.UnknownHostException;
import java.util.Enumeration;
public class App{
public static void main(String[] args)throws Exception {
// getting the list of interfaces in the local machine
Enumeration<NetworkInterface> n = NetworkInterface.getNetworkInterfaces();
while( n.hasMoreElements()){ //for each interface
System.out.println("----------------------------------------------------");
NetworkInterface e = n.nextElement();
//name of the interface
System.out.println("Interface Name: " + e.getName());
/* A interface may be binded to many IP addresses like IPv4 and IPv6
hence getting the Enumeration of list of IP addresses */
Enumeration<InetAddress> a = e.getInetAddresses();
while( a.hasMoreElements()){
InetAddress addr = a.nextElement();
String add = addr.getHostAddress().toString();
if( add.length() < 17 )
System.out.println("IPv4 Address: " + add);
else
System.out.println("IPv6 Address: " + add);
}
if(e.getHardwareAddress() != null){
// getting the mac address of the particular network interface
byte[] mac = e.getHardwareAddress();
// properly formatting the mac address
StringBuilder macAddress = new StringBuilder();
for(int i =0; i < mac.length; i++){
macAddress.append(String.format("%03X%s", mac[i],(i < mac.length -1) ? "-":""));
}
System.out.println("Hardware adrress: " + macAddress.toString());
}
System.out.println("----------------------------------------------------");
}
}
}
kali linux 2.0中代码的输出为:
----------------------------------------------------
接口名:wlan0
IPv6地址:fe80:0:0:0:1992:d9bc:7d8c:d85b%wlan0
IPv4 Address: 192.168.1.137
Hardware adrress: 078-0E4-000-0E7-0B0-046
----------------------------------------------------
----------------------------------------------------
Interface Name: lo
IPv6 Address: 0:0:0:0:0:0:0:1%lo
IPv4 Address: 127.0.0.1
----------------------------------------------------
代码打印运行Android或java应用程序的设备的本地IPv4地址。
try {
Enumeration networkInterfaces = NetworkInterface.getNetworkInterfaces(); // gets All networkInterfaces of your device
while (networkInterfaces.hasMoreElements()) {
NetworkInterface inet = (NetworkInterface) networkInterfaces.nextElement();
Enumeration address = inet.getInetAddresses();
while (address.hasMoreElements()) {
InetAddress inetAddress = (InetAddress) address.nextElement();
if (inetAddress.isSiteLocalAddress()) {
System.out.println("Your ip: " + inetAddress.getHostAddress()); /// gives ip address of your device
}
}
}
} catch (Exception e) {
// Handle Exception
}
问题内容: 如何仅使用 proc 获得所有网络接口的(IPv4)地址?经过广泛的调查,我发现了以下内容: 使用,需要打开套接字并充分了解所有接口名称。在Linux上的任何手册页中也没有记录。 包含,但这是接口统计信息的列表。 包含,这正是我需要的,但需要IPv6。 通常,在中很容易找到接口,但是很少使用实际地址,除非在某些连接中有明确的一部分。 有一个名为的系统调用,这是Windows所期望的非常
本文向大家介绍Shell脚本获取本地网卡IP、mac地址、子网掩码、dns IP、外网IP,包括了Shell脚本获取本地网卡IP、mac地址、子网掩码、dns IP、外网IP的使用技巧和注意事项,需要的朋友参考一下
我有一个物联网设备,我知道该设备的Mac地址。我的物联网设备连接到我的wifi,我想知道有什么方法可以使用该设备的mac地址来了解其本地ip地址?我的要求是将android应用程序连接到同一个wifi,使用Mac地址搜索设备的ip地址,并建立TCP连接。到目前为止,我一直在搜索这个问题,我没有得到这个问题的完美答案,这真的需要< code>ssdp扫描,或者有任何其他方法可以做到这一点。 RARP
问题内容: 我的机器上运行了一个简单的node.js程序,我想获取运行该程序的PC的本地IP地址。如何使用node.js获得它? 问题答案:
问题内容: 我正在尝试使用Java获取我的Internet IP地址,但是当我的IP地址为192.168.0.xxx时,我一直在获取本地地址(即:127.0.0.1) 我正在使用该行: 这似乎是获取IP地址的标准方法,但这不是我想要的。每个教程都说要使用此行,所以我有些困惑。 有人可以让我知道如何获取正确的IP地址吗? 我在连接到WiFi的设备上运行,但未使用任何电缆。我正在使用ifconfig
我想向本地网络中设备上运行的RestApi发出get请求,以检索设备生成的JSON数据。 RestApi正确响应来自网络中每个其他设备的浏览器调用。但是,当我试图通过dart的http访问数据时,Bash的curl也可以工作。get程序无法检索JSON数据-我得到的是状态码400。 修改URL以确保其正确写入, 在flutter应用程序中,我可以很容易地通过http.get连接到Firebase上