Android - 获取我的热点主机的 ip
Android - get the ip of my hotspot host
我正在尝试通过套接字连接 2 个设备,以便它们可以交换数据。它们还通过 wifi 热点连接。我正在使用服务。
设备 1 是热点(实现 ServerSocket 的地方),设备 2 是连接热点的设备(实现 Socket 的地方)。
我做了一些研究,我能够获得他们每个人的 ip(但他们自己计算 class)。但是为了让我创建客户端套接字,我需要主机的 IP 地址(作为热点工作的 phone)在另一个 class 中。我无法在服务器端获取它,因为那部分代码不会被执行,因为我正在使用一个 phone 创建热点网络,另一个连接到它。
我知道网络共享设备的 IP 地址通常是相同的,但我不能相信这一点,因为我必须确保它适用于所有 phones。
那么,如何在客户端(phone 连接到该热点)服务中获取服务器(热点主机)的 IP 地址?
确定网关的ip。 Programmatically getting the gateway and subnet mask details。使用 WifiManager.getDhcpInfo().gateway
.
在客户端你可以使用dhcp.gateway获取服务器端(创建热点的那个)的IP地址。
private final WifiManager manager;
private final DhcpInfo dhcp;
private InetAddress getServerIP() {
manager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
dhcp = manager.getDhcpInfo();
final String address = Formatter.formatIpAddress(dhcp.gateway);// gateway -
default gateway IP address
InetAddress serverIP = null;
try {
serverIP = InetAddress.getByName(address);
if(mDebug)
Log.i("Server IP ","" + serverIP.toString());
} catch (Exception e) {
if(mDebug)
Log.e("Cannot find server's IP. Error ","" + e.toString());
}
return serverIP ;
}
我正在尝试通过套接字连接 2 个设备,以便它们可以交换数据。它们还通过 wifi 热点连接。我正在使用服务。
设备 1 是热点(实现 ServerSocket 的地方),设备 2 是连接热点的设备(实现 Socket 的地方)。 我做了一些研究,我能够获得他们每个人的 ip(但他们自己计算 class)。但是为了让我创建客户端套接字,我需要主机的 IP 地址(作为热点工作的 phone)在另一个 class 中。我无法在服务器端获取它,因为那部分代码不会被执行,因为我正在使用一个 phone 创建热点网络,另一个连接到它。
我知道网络共享设备的 IP 地址通常是相同的,但我不能相信这一点,因为我必须确保它适用于所有 phones。
那么,如何在客户端(phone 连接到该热点)服务中获取服务器(热点主机)的 IP 地址?
确定网关的ip。 Programmatically getting the gateway and subnet mask details。使用 WifiManager.getDhcpInfo().gateway
.
在客户端你可以使用dhcp.gateway获取服务器端(创建热点的那个)的IP地址。
private final WifiManager manager;
private final DhcpInfo dhcp;
private InetAddress getServerIP() {
manager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
dhcp = manager.getDhcpInfo();
final String address = Formatter.formatIpAddress(dhcp.gateway);// gateway -
default gateway IP address
InetAddress serverIP = null;
try {
serverIP = InetAddress.getByName(address);
if(mDebug)
Log.i("Server IP ","" + serverIP.toString());
} catch (Exception e) {
if(mDebug)
Log.e("Cannot find server's IP. Error ","" + e.toString());
}
return serverIP ;
}