通过Android Emulator连接到Java服务器
我的电脑上有一台工作正常的服务器。我已经制作了一个小的桌面应用程序,可以完美地连接到它,但我无法让它在Android上运行 到目前为止,我已经尝试了我所发现的一切,更改端口,使用10.0.2.2作为IP地址,使用PC IP地址,制作一个新的AVD,但没有任何效果。我的应用程序在创建新套接字时总是崩溃 这是我的异步任务代码:通过Android Emulator连接到Java服务器,java,android,sockets,Java,Android,Sockets,我的电脑上有一台工作正常的服务器。我已经制作了一个小的桌面应用程序,可以完美地连接到它,但我无法让它在Android上运行 到目前为止,我已经尝试了我所发现的一切,更改端口,使用10.0.2.2作为IP地址,使用PC IP地址,制作一个新的AVD,但没有任何效果。我的应用程序在创建新套接字时总是崩溃 这是我的异步任务代码: public class ServerConnect extends AsyncTask<Void, Void, Void> { String serve
public class ServerConnect extends AsyncTask<Void, Void, Void> {
String serverIP = "10.0.2.2";
Integer serverPort = 3000;
Socket client;
@Override
protected Void doInBackground(Void... params) {
try {
client = new Socket(InetAddress.getByName(serverIP),serverPort);
PrintWriter out = new PrintWriter(new BufferedWriter(
new OutputStreamWriter(client.getOutputStream())),
true);
out.println("LOGIN "+ "test");
Log.e("SOCKET", "Success");
} catch (IOException e) {
Log.e("SOCKET", "DERP");
}
return null;
}
}
公共类ServerConnect扩展异步任务{
字符串serverIP=“10.0.2.2”;
整数服务器端口=3000;
套接字客户端;
@凌驾
受保护的Void doInBackground(Void…参数){
试一试{
client=newsocket(InetAddress.getByName(serverIP),serverPort);
PrintWriter out=新的PrintWriter(新的BufferedWriter(
新的OutputStreamWriter(client.getOutputStream()),
正确的);
out.println(“登录”+“测试”);
Log.e(“SOCKET”、“Success”);
}捕获(IOE异常){
Log.e(“SOCKET”、“DERP”);
}
返回null;
}
}
将此添加到您的AndroidManifest.xml上:
<uses-permission android:name="android.permission.INTERNET"/>
正如我从您的代码中看到的,您的代码被包装在一个try/catch中,这意味着崩溃不是来自您的代码。。这意味着你可能没有互联网权限(在你的情况下是你的内部网络)
我的应用程序总是崩溃…
这在实践中意味着什么?你的logcat怎么说?Log.e(“SOCKET”、“DERP”)代码>你扔掉了所有有用的异常信息,这是对你自己的一次很好的打击。现在用一些有用的东西替换这一行,并用错误的完整堆栈跟踪编辑您的帖子。例如,抛出新的RuntimeException(e)
会更有用。