有人能帮助我吗?我目前正在做一个 Android应用程序项目。
但是我知道 MYSQL 与 Android 不完全兼容为时已晚。
我现在不能回去。正如标题所说,我正在使用 WAMP服务器在计算机的本地网络上托管我的 MYSQL数据库。
当我读到(纠正我,如果我错了)时,您需要该计算机的实际 IP 从 WAMP服务器获取数据即可。
如果在任何特定时刻托管计算机的 IP 发生更改, Android应用程序将无法连接到 MYSQL数据库。
您是否有计划地获取托管计算机的 IP ?
我尝试使用设备的当前 IP地址来获取网络IP 。
示例:
设备IP 192.168.1.2 且托管计算机IP 192.168.20 ,现在我们知道了网络IP 是 192.168.1.1 。然后从 192.168.1.2 循环直到 192.168.1.254 ,循环只有在得到您需要的响应时才会中断/停止。然后将 IP 保存到字符串。
public String isConnectedToServer(String url, int index) {
StrictMode.ThreadPolicy policy = new
StrictMode.ThreadPolicy.Builder()
.permitAll().build();
StrictMode.setThreadPolicy(policy);
String result = "";
for(int octet = 2; octet <= 254; octet++) {
String compare = ""+octet;
if(!compare.equals(url.substring(index + 1, url.length()))) {
try {
HttpURLConnection.setFollowRedirects(false);
HttpURLConnection con = (HttpURLConnection) new URL("http://" + url.substring(0, index + 1) + "" + octet + "/AVMSSv2").openConnection();
con.setRequestMethod("HEAD");
con.setRequestProperty("User-Agent", "Android Application");
con.setRequestProperty("Connection", "close");
//Toast.makeText(LogIn.this, "NETWORK CONNECTED", Toast.LENGTH_LONG).show();
if (con.getResponseCode() == HttpURLConnection.HTTP_OK) {
result = "http://" + url.substring(0, index + 1) + "" + octet + "/AVMSSv2/pages/android.php";
break;
} else {
result = "";
}
Log.w("APP", "Network");
} catch (Exception e) {
// Handle your exceptions
//Toast.makeText(LogIn.this, "NETWORK ERROR CONNECTION", Toast.LENGTH_LONG).show();
Log.e("APP", "Exception", e);
result = "";
}
}
}
return result;
}
上面的代码只是我的一个例子,但似乎不起作用。我已经使用了 AsyncTask 。随意给我任何建议。
P.S。问题是我无法更改为其他数据库。因为目前的项目是多平台。这就是为什么我需要坚持使用MYSQL,因为这是其他平台目前正在使用的。
我希望尽可能坚持动态IP主机。
答案 0 :(得分:0)
使用路由器设置数据库服务器的静态IP地址。
然后你解决了两个问题。 1)它不会改变IP地址,2)不需要担心上面的编程,因为你知道IP地址