我正在尝试通过套接字连接2个设备,以便它们可以交换数据。它们也通过wifi热点连接。我正在使用服务。
设备1是热点(实现ServerSocket的地方),设备2是连接它的人(实现Socket的地方)。 我做了一些研究,我能够得到每一个的ip(但是在他们自己的课上计算)。但是为了让我创建客户端套接字,我需要在另一个类中使用主机的IP地址(作为热点的电话)。我无法在服务器端获得它,因为代码的那部分不会被执行,因为我使用一部手机创建热点网络而另一部分连接到它。
我知道通常绑定设备的IP地址通常是相同的,但我不能相信,因为我必须确保它适用于所有手机。
那么,如何在客户端(连接到该热点的电话)服务中获取服务器(热点主机)的IP地址?
答案 0 :(得分:1)
在客户端,您可以使用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 ;
}
答案 1 :(得分:0)
确定网关的IP。 Programmatically getting the gateway and subnet mask details。使用WifiManager.getDhcpInfo().gateway
。