我无法将插件从android clien连接到java服务器

时间:2015-09-28 05:22:50

标签: java android sockets

我想将Android客户端连接到java服务器。我的Android客户端在真实手机和localhost上的服务器上。我尝试连接但显示错误:

09-28 11:08:44.399  14330-14371/smsagent.sedi.ru.sockets E/AndroidRuntime﹕ FATAL EXCEPTION: AsyncTask #1
    Process: smsagent.sedi.ru.sockets, PID: 14330
    java.lang.RuntimeException: An error occured while executing doInBackground()
            at android.os.AsyncTask$3.done(AsyncTask.java:300)
            at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
            at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
            at java.util.concurrent.FutureTask.run(FutureTask.java:242)
            at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
            at java.lang.Thread.run(Thread.java:818)
     Caused by: java.lang.SecurityException: Permission denied (missing INTERNET permission?)
            at java.net.InetAddress.lookupHostByName(InetAddress.java:451)
            at java.net.InetAddress.getAllByNameImpl(InetAddress.java:252)
            at java.net.InetAddress.getAllByName(InetAddress.java:215)
            at java.net.Socket.tryAllAddresses(Socket.java:109)
            at java.net.Socket.<init>(Socket.java:178)
            at java.net.Socket.<init>(Socket.java:150)
            at smsagent.sedi.ru.sockets.MainActivity$MyAsync.doInBackground(MainActivity.java:65)
            at smsagent.sedi.ru.sockets.MainActivity$MyAsync.doInBackground(MainActivity.java:61)
            at android.os.AsyncTask$2.call(AsyncTask.java:288)
            at java.util.concurrent.FutureTask.run(FutureTask.java:237)
            at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
            at java.lang.Thread.run(Thread.java:818)
     Caused by: android.system.GaiException: android_getaddrinfo failed: EAI_NODATA (No address associated with hostname)
            at libcore.io.Posix.android_getaddrinfo(Native Method)
            at libcore.io.ForwardingOs.android_getaddrinfo(ForwardingOs.java:55)
            at java.net.InetAddress.lookupHostByName(InetAddress.java:438)
            at java.net.InetAddress.getAllByNameImpl(InetAddress.java:252)
            at java.net.InetAddress.getAllByName(InetAddress.java:215)
            at java.net.Socket.tryAllAddresses(Socket.java:109)
            at java.net.Socket.<init>(Socket.java:178)
            at java.net.Socket.<init>(Socket.java:150)
            at smsagent.sedi.ru.sockets.MainActivity$MyAsync.doInBackground(MainActivity.java:65)
            at smsagent.sedi.ru.sockets.MainActivity$MyAsync.doInBackground(MainActivity.java:61)
            at android.os.AsyncTask$2.call(AsyncTask.java:288)
            at java.util.concurrent.FutureTask.run(FutureTask.java:237)
            at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
            at java.lang.Thread.run(Thread.java:818)
     Caused by: android.system.ErrnoException: android_getaddrinfo failed: EACCES (Permission denied)
            at libcore.io.Posix.android_getaddrinfo(Native Method)
            at libcore.io.ForwardingOs.android_getaddrinfo(ForwardingOs.java:55)
            at java.net.InetAddress.lookupHostByName(InetAddress.java:438)
            at java.net.InetAddress.getAllByNameImpl(InetAddress.java:252)
            at java.net.InetAddress.getAllByName(InetAddress.java:215)
            at java.net.Socket.tryAllAddresses(Socket.java:109)
            at java.net.Socket.<init>(Socket.java:178)
            at java.net.Socket.<init>(Socket.java:150)
            at smsagent.sedi.ru.sockets.MainActivity$MyAsync.doInBackground(MainActivity.java:65)
            at smsagent.sedi.ru.sockets.MainActivity$MyAsync.doInBackground(MainActivity.java:61)
            at android.os.AsyncTask$2.call(AsyncTask.java:288)
            at java.util.concurrent.FutureTask.run(FutureTask.java:237)
            at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
            at java.lang.Thread.run(Thread.java:818)

我设置了android权限:

<uses-permission android:name="ANDROID.PERMISSION.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

这是我的代码:

private class MyAsync extends AsyncTask<Void, Void, Void>{
        @Override
        protected Void doInBackground(Void... params) {
            try {
                mSocket = new Socket(Constants.CHAT_SERVER_URL, 4444);

            } catch (IOException e) {
                e.printStackTrace();
            }
            return null;
        }
    }



@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        MyAsync myAsync = new MyAsync();
        myAsync.execute();
    }

它是服务器主机:

public static final String CHAT_SERVER_URL = "http://192.168.0.33";

enter image description here

我尝试在手机浏览器中打开此IP - 打开一个空白页面,没有错误。 如果我尝试从我的计算机上的Java核心客户端连接 - 一切都很好。这意味着服务器工作正常。我尝试用10.0.0.2 ip从android模拟器连接 - 没有帮助。

修改 我添加权限

<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    <uses-permission android:name="android.permission.INTERNET"/>

和app不会粉碎但是错误

09-28 11:36:36.829  28006-28046/smsagent.sedi.ru.sockets W/System.err﹕ java.net.UnknownHostException: Unable to resolve host "http://192.168.0.33": No address associated with hostname
09-28 11:36:36.829  28006-28046/smsagent.sedi.ru.sockets W/System.err﹕ at java.net.InetAddress.lookupHostByName(InetAddress.java:457)
09-28 11:36:36.829  28006-28046/smsagent.sedi.ru.sockets W/System.err﹕ at java.net.InetAddress.getAllByNameImpl(InetAddress.java:252)
09-28 11:36:36.829  28006-28046/smsagent.sedi.ru.sockets W/System.err﹕ at java.net.InetAddress.getAllByName(InetAddress.java:215)
09-28 11:36:36.829  28006-28046/smsagent.sedi.ru.sockets W/System.err﹕ at java.net.Socket.tryAllAddresses(Socket.java:109)
09-28 11:36:36.829  28006-28046/smsagent.sedi.ru.sockets W/System.err﹕ at java.net.Socket.<init>(Socket.java:178)
09-28 11:36:36.829  28006-28046/smsagent.sedi.ru.sockets W/System.err﹕ at java.net.Socket.<init>(Socket.java:150)
09-28 11:36:36.829  28006-28046/smsagent.sedi.ru.sockets W/System.err﹕ at smsagent.sedi.ru.sockets.MainActivity$MyAsync.doInBackground(MainActivity.java:65)
09-28 11:36:36.829  28006-28046/smsagent.sedi.ru.sockets W/System.err﹕ at smsagent.sedi.ru.sockets.MainActivity$MyAsync.doInBackground(MainActivity.java:61)
09-28 11:36:36.829  28006-28046/smsagent.sedi.ru.sockets W/System.err﹕ at android.os.AsyncTask$2.call(AsyncTask.java:288)
09-28 11:36:36.829  28006-28046/smsagent.sedi.ru.sockets W/System.err﹕ at java.util.concurrent.FutureTask.run(FutureTask.java:237)
09-28 11:36:36.829  28006-28046/smsagent.sedi.ru.sockets W/System.err﹕ at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
09-28 11:36:36.829  28006-28046/smsagent.sedi.ru.sockets W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
09-28 11:36:36.829  28006-28046/smsagent.sedi.ru.sockets W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
09-28 11:36:36.829  28006-28046/smsagent.sedi.ru.sockets W/System.err﹕ at java.lang.Thread.run(Thread.java:818)
09-28 11:36:36.829  28006-28046/smsagent.sedi.ru.sockets W/System.err﹕ Caused by: android.system.GaiException: android_getaddrinfo failed: EAI_NODATA (No address associated with hostname)
09-28 11:36:36.829  28006-28046/smsagent.sedi.ru.sockets W/System.err﹕ at libcore.io.Posix.android_getaddrinfo(Native Method)
09-28 11:36:36.829  28006-28046/smsagent.sedi.ru.sockets W/System.err﹕ at libcore.io.ForwardingOs.android_getaddrinfo(ForwardingOs.java:55)
09-28 11:36:36.829  28006-28046/smsagent.sedi.ru.sockets W/System.err﹕ at java.net.InetAddress.lookupHostByName(InetAddress.java:438)

1 个答案:

答案 0 :(得分:1)

<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>

使用192.168.0.33而不是192.168.0.33 192.168.0.33是URL,192.168.0.33是IP。