通过Android Emulator连接到Java服务器

通过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

我的电脑上有一台工作正常的服务器。我已经制作了一个小的桌面应用程序,可以完美地连接到它,但我无法让它在Android上运行

到目前为止,我已经尝试了我所发现的一切,更改端口,使用10.0.2.2作为IP地址,使用PC IP地址,制作一个新的AVD,但没有任何效果。我的应用程序在创建新套接字时总是崩溃

这是我的异步任务代码:

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)
会更有用。