我需要一些帮助。我试图在android中以编程方式获取wifi网络的网关和子网掩码详细信息,然后在我的应用程序中的其他位置使用获取的字符串。我在此站点上找到了一个解决方案到目前为止我已经实现了什么。但是设备上返回的IP地址与我在计算机上检查ipconfig时不同。所以我的应用程序崩溃了。 当我执行ipconfig时,我得到192.168.0.xx5,但是我在textview显示器上的活动显示了一个不同的192.168.0.xx1 ..但是因为我从我的xampp服务器下载数据,我需要它是相同的
以下是我的代码:
public class DHCPInfo extends Activity implements OnClickListener{
public String s_dns1 ;
public String s_dns2;
public String s_gateway;
public String s_ipAddress;
public String s_subnet;
public String s_serverAddress;
TextView dhcp_info,ip_address;
Button btn_dhcp;
@SuppressWarnings("deprecation")
DhcpInfo dhcpInfo;
WifiManager wifii;
final Handler h = new Handler();
/** Called when the activity is first created. */
@SuppressWarnings("deprecation")
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.dhcp);
wifii= (WifiManager) getSystemService(Context.WIFI_SERVICE);
dhcpInfo=wifii.getDhcpInfo();
s_dns1="DNS 1: "+String.valueOf(dhcpInfo.dns1);
s_dns2="DNS 2: "+String.valueOf(dhcpInfo.dns2);
s_gateway="Default Gateway: "+String.valueOf(dhcpInfo.gateway);
s_ipAddress="IP Address: "+String.valueOf(dhcpInfo.ipAddress);
s_subnet="Subnet Mask: "+String.valueOf(dhcpInfo.netmask);
s_serverAddress="Server IP: "+String.valueOf(dhcpInfo.serverAddress);
int ipAddress = dhcpInfo.ipAddress;
intToIpAddress(ipAddress);
//display them
dhcp_info= (TextView) findViewById(R.id.text_dhcp);
dhcp_info.setText("Network Info\n"+s_dns1+"\n"+s_dns2+"\n"+s_gateway+"\n"+s_ipAddress+"\n"+s_serverAddress);
ip_address= (TextView) findViewById(R.id.text_ip);
dhcp_info.setText("IP Address\n"+ intToIpAddress(ipAddress));
btn_dhcp = (Button) findViewById(R.id.btn_dhcp);
btn_dhcp.setOnClickListener(this);
}
public String intToIpAddress(int ipAddress) {
return ((ipAddress & 0xFF) + "." +
((ipAddress >>>= 8) & 0xFF) + "." +
((ipAddress >>>= 8) & 0xFF) + "." +
((ipAddress >>>= 8) & 0xFF));
}
}
答案 0 :(得分:1)
据我所知,你有一台笔记本电脑和一部移动设备。两者都连接到相同的WiFi网络,您的笔记本电脑作为Web服务器工作。他们拥有不同的IP地址是正常的 - 因为它们毕竟是不同的设备。 :)
如果您的路由器向设备提供静态IP(这不太可能),您可以在Java代码中硬编码笔记本电脑的地址。这或多或少可以用于调试,但对于生产无用 - 因为应用程序仅在您将设备连接到当前的WiFi网络时才有效。
或者,您可以在Internet上访问Web应用程序(而不是仅使用本地网络)。如果您的ISP为您提供静态IP,您可以在笔记本电脑上托管该应用程序。否则你可以使用一些托管服务提供商 - 一些云服务也应该是一个好的解决方案而且相当便宜。