在Android开发中通过localhost或127.0.0.1访问本地服务器时,会报java.net.ConnectException: localhost/127.0.0.1:8083 -Connection refused异常。
为什么会报这个异常呢?因为Android模拟器本身把自己当做了localhost或127.0.0.1,而此时我们又通过localhost或127.0.0.1访问本地服务器,所以会抛出异常了。
在网上查了下,在模拟器上可以用10.0.2.2代替127.0.0.1和localhost;
另外如果是在局域网环境可以用192.168.0.x或者192.168.1.x(根据具体配置)连接本机。在局域网环境为了保守起见,我们可以通过Android代码来获取本机的IP,接下来就通过代码演示怎么获取Android能访问本地服务器的IP
第一步,在清单文件中加入以下权限
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
第二步,获取Android本机IP地址和MAC
package cn.itcast.test;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;
import java.util.List;
import android.content.Context;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.test.AndroidTestCase;
import android.util.Log;
import cn.itcast.domain.Video;
import cn.itcast.news.MainActivity;
import cn.itcast.service.VideoService;
publicclass VideoServiceTest extends AndroidTestCase {
privatestaticfinal String TAG ="VideoServiceTest";
publicvoid testLocalIpAndMac(){
Log.i(TAG, "IP: "+getLocalIpAddress()+", MAC: "+getLocalMacAddress());
}
/**
* 获取Android本机IP地址
*
* @return
*/
private String getLocalIpAddress() {
try {
for (Enumeration<NetworkInterface> en = NetworkInterface
.getNetworkInterfaces(); en.hasMoreElements();) {
NetworkInterface intf = en.nextElement();
for (Enumeration<InetAddress> enumIpAddr = intf
.getInetAddresses(); enumIpAddr.hasMoreElements();) {
InetAddress inetAddress = enumIpAddr.nextElement();
if (!inetAddress.isLoopbackAddress()) {
return inetAddress.getHostAddress().toString();
}
}
}
} catch (SocketException ex) {
Log.e("WifiPreference IpAddress", ex.toString());
}
returnnull;
}
/**
* 获取Android本机MAC
*
* @return
*/
private String getLocalMacAddress() {
WifiManager wifi = (WifiManager) this.getContext().getSystemService(Context.WIFI_SERVICE);
WifiInfo info = wifi.getConnectionInfo();
return info.getMacAddress();
}
}
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;
import java.util.List;
import android.content.Context;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.test.AndroidTestCase;
import android.util.Log;
import cn.itcast.domain.Video;
import cn.itcast.news.MainActivity;
import cn.itcast.service.VideoService;
publicclass VideoServiceTest extends AndroidTestCase {
privatestaticfinal String TAG ="VideoServiceTest";
publicvoid testLocalIpAndMac(){
Log.i(TAG, "IP: "+getLocalIpAddress()+", MAC: "+getLocalMacAddress());
}
/**
* 获取Android本机IP地址
*
* @return
*/
private String getLocalIpAddress() {
try {
for (Enumeration<NetworkInterface> en = NetworkInterface
.getNetworkInterfaces(); en.hasMoreElements();) {
NetworkInterface intf = en.nextElement();
for (Enumeration<InetAddress> enumIpAddr = intf
.getInetAddresses(); enumIpAddr.hasMoreElements();) {
InetAddress inetAddress = enumIpAddr.nextElement();
if (!inetAddress.isLoopbackAddress()) {
return inetAddress.getHostAddress().toString();
}
}
}
} catch (SocketException ex) {
Log.e("WifiPreference IpAddress", ex.toString());
}
returnnull;
}
/**
* 获取Android本机MAC
*
* @return
*/
private String getLocalMacAddress() {
WifiManager wifi = (WifiManager) this.getContext().getSystemService(Context.WIFI_SERVICE);
WifiInfo info = wifi.getConnectionInfo();
return info.getMacAddress();
}
}
运行结果
其中10.0.2.15就是我们要得到的IP
相关推荐
无法连接到Visual Studio 的Localhost Web服务器的解决方法
用Android访问本地站点---(localhost,10.0.2.2)
以上这篇解决webpack无法通过IP地址访问localhost的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。 参考地址:...
然后,您的浏览器中的服务器即可使用地址localhost:3000进行访问。 Docker入门 进入文件夹“ docker-lemp”并运行 docker-compose up 有关Docker LEMP堆栈的更多信息,请参见文件“ docker-lemp / docker-compose....
今天在mac上搭建好了php的环境,把先前在window、linux下运行良好的程序放在mac上,居然出现访问不了数据库,数据库连接的host用的是localhost,可以确认数据库配置是正确的,因为在java中使用localhost访问正常,...
Mysql root用户对应的host字段缺少localhost导致本地无法访问数据库问题修复
今天在调试时发现一个localhost问题: ...当MQTT客户端设置本地地址为localhost:1883时,无法连接本地broker. #define EMBER_AF_PLUGIN_TRANSPORT_MQTT_BROKER_ADDRESS tcp://127.0.0.1:1883 #define EM
实现从android客户端向php服务器传送数据,自己做的一个小demo,和大家分享
Android上的PHP服务器,安装后即可使用localhost:8080访问端口可以自定义。
XP不属于服务器版本的系统,使用它调试会有一些麻烦,例如常常会发现局域网内的其它用户无法使用IP地址来访问本地的IIS网站
NULL 博文链接:https://jinhailion.iteye.com/blog/1878888
解决Windows10下无法对docker容器进行端口访问(端口映射的问题) 在Windows10系统服务器中安装了docker和docker-compose 并尝试在其中运行Nginx服务,映射也做好 问题:在主机的浏览器中,打开localhost:port无法...
非常适用于搭建微信小程序本地服务端,只需要安装node.js,便可高效快速搭建一个服务端。使用方法:安装node.js完成之后,将所需的资源放入htdocs中,使用node启动index.js,然后只需要在微信小程序中添加url地址...
安装完IIS后访问localhost需要密码解决方法,自己在网上找了很多的方法都不行,于是弄了个好一点的方法
Navicat无法远程连接MySql服务器问题的解决方法写在前面: 操作系统:中标麒麟4.0; 数据库:MySQL5.7.26; JDK:采用中标麒麟系统自带的openjdk; 客户端工具:Navicat; 前置条件: MySQL服务安装完毕; 情景: ...
ORACLE 11G 安装后只能localhost 访问本机,不能用IP地址被访问。在监听文件 listener.ora 中加入如下: (SID_DESC = (GLOBAL_DBNAME = orcl01) (ORACLE_HOME = C:\app\Administrator\product\11.2.0\dbhome_1) ...
解决vs2012 “无法启动已配置的visual studio开发web服务器”的解决办法
服务器上的BMI计算器这是在本地服务器上运行的简单计算器和BMI计算器。 所使用的技术是git bash(命令行)和atom来为这些计算器编写代码。 这段代码应该在atom:和chrome浏览器中使用localhost:3000运行。 您应该...
本地服务器代理 进行中-目前正在建立中该软件包可用于启动本地服务器并将URL代理到本地TLD(例如.wip )。安装克隆仓库并安装软件包运行npm link和yarn link以使命令全局可用使用设置站点配置该命令必须在您的项目...
如何让mysql只能用localhost,127.0.0.1连接,不能用ip连接 mysql不能用localhost,127.0.0.1连接,只能用ip连接 的解决方法