繁体   English   中英

为什么在尝试使用 android studio java web 服务器连接到我的 PC 上的服务器时出现错误?

[英]Why when trying to connect using android studio java web server to my server on the pc i'm getting error?

在我的电脑上,我正在运行一个网络服务器。 然后在我的 android 设备中使用我在 android studio 中的代码,我试图连接到网络 WiFi 上的 pc web 服务器。

我的安卓设备已经通过 WiFi 连接到网络。 我知道我电脑的IP地址。

这是在MainActivity的顶部

private String[] ipaddresses = new String[]{
            "http://192.168.1.10:8098/?cmd=nothing",
            "http://10.0.0.1:8098/?cmd=nothing",
            "http://10.0.0.138:8098/?cmd=nothing"};

onCreate

@Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        addListenerOnButton();
        currentActivity = this;
        initTTS();
    }

然后addListenerOnButton();

public void addListenerOnButton()
    {

        btnClick = (Button) findViewById(R.id.connecttoserverbutton);

        btnClick.setOnClickListener(new OnClickListener()
        {
            byte[] response = null;
            @Override
            public void onClick(View arg0)
            {

                text = (TextView) findViewById(R.id.statusTextView);

                Thread t = new Thread(new Runnable()
                {
                    @Override
                    public void run()
                    {
                        for (int i = 0; i < ipaddresses.length; i++)

                        {
                            counter = i;
                            try
                            {
                                response = Get(ipaddresses[i]);
                            }
                            catch (Exception e)
                            {
                                String err = e.toString();
                            }

                            if (response!=null)
                            {


                                try
                                {
                                    final String a = new String(response, "UTF-8");




                                    text.post(new Runnable()
                                    {
                                        @Override
                                        public void run()
                                        {
                                            text.setText(a + " Oמ " + ipaddresses[counter]);
                                        }
                                    });
                                    iptouse = ipaddresses[i].substring(0,ipaddresses[i].lastIndexOf("=")+1);
                                    connectedtoipsuccess = true;
                                    Logger.getLogger("MainActivity(inside thread)").info(a);
                                } catch (UnsupportedEncodingException e)
                                {
                                    e.printStackTrace();
                                    Logger.getLogger("MainActivity(inside thread)").info("encoding exception");
                                }

                                Logger.getLogger("MainActivity(inside thread)").info("test1");
                                break;

                            }
                            else
                            {

                            }





                        }
                        counter = 0;
                        if (response == null)
                        {
                            text.post(new Runnable()
                            {
                                @Override
                                public void run()
                                {
                                    text.setText("Connection Failed");
                                }
                            });
                        }
                    }
                });
                t.start();
            }
        });

    }

然后最后一个Get方法

private byte[] Get(String urlIn)
    {
        URL url = null;
        String urlStr = urlIn;
        if (urlIn!=null)
            urlStr=urlIn;

        try
        {
            url = new URL(urlStr);
        } catch (MalformedURLException e)
        {
            e.printStackTrace();
            return null;
        }
        HttpURLConnection urlConnection = null;
        try
        {
            urlConnection = (HttpURLConnection) url.openConnection();

            InputStream in = new BufferedInputStream(urlConnection.getInputStream());

            byte[] buf=new byte[10*1024];
            int szRead = in.read(buf);
            byte[] bufOut;

            if (szRead==10*1024)
            {
                throw new AndroidRuntimeException("the returned data is bigger than 10*1024.. we don't handle it..");
            }
            else
            {
                bufOut = Arrays.copyOf(buf, szRead);
            }
            return bufOut;
        }
        catch (IOException e)
        {
            e.printStackTrace();
            return null;
        }
        finally
        {
            if (urlConnection!=null)
                urlConnection.disconnect();
        }
    }
}

在我的 android 设备中运行程序并单击按钮时,我收到错误/异常:

05-13 08:03:56.055 8930-12196/com.web_server.webserver W/System.err: java.net.SocketException: socket failed: EACCES (Permission denied)
05-13 08:03:56.061 8930-12196/com.web_server.webserver W/System.err:     at libcore.io.IoBridge.socket(IoBridge.java:623)
05-13 08:03:56.061 8930-12196/com.web_server.webserver W/System.err:     at java.net.PlainSocketImpl.create(PlainSocketImpl.java:198)
05-13 08:03:56.061 8930-12196/com.web_server.webserver W/System.err:     at java.net.Socket.checkOpenAndCreate(Socket.java:687)
05-13 08:03:56.061 8930-12196/com.web_server.webserver W/System.err:     at java.net.Socket.setSoTimeout(Socket.java:541)
05-13 08:03:56.061 8930-12196/com.web_server.webserver W/System.err:     at com.android.okhttp.Connection.connect(Connection.java:147)
05-13 08:03:56.061 8930-12196/com.web_server.webserver W/System.err:     at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:276)
05-13 08:03:56.061 8930-12196/com.web_server.webserver W/System.err:     at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:211)
05-13 08:03:56.061 8930-12196/com.web_server.webserver W/System.err:     at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:373)
05-13 08:03:56.061 8930-12196/com.web_server.webserver W/System.err:     at com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:323)
05-13 08:03:56.061 8930-12196/com.web_server.webserver W/System.err:     at com.android.okhttp.internal.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:190)
05-13 08:03:56.061 8930-12196/com.web_server.webserver W/System.err:     at com.web_server.webserver.MainActivity.Get(MainActivity.java:324)
05-13 08:03:56.061 8930-12196/com.web_server.webserver W/System.err:     at com.web_server.webserver.MainActivity.access$300(MainActivity.java:34)
05-13 08:03:56.061 8930-12196/com.web_server.webserver W/System.err:     at com.web_server.webserver.MainActivity$1$1.run(MainActivity.java:94)
05-13 08:03:56.061 8930-12196/com.web_server.webserver W/System.err:     at java.lang.Thread.run(Thread.java:818)
05-13 08:03:56.061 8930-12196/com.web_server.webserver W/System.err: Caused by: android.system.ErrnoException: socket failed: EACCES (Permission denied)
05-13 08:03:56.062 8930-12196/com.web_server.webserver W/System.err:     at libcore.io.Posix.socket(Native Method)
05-13 08:03:56.062 8930-12196/com.web_server.webserver W/System.err:     at libcore.io.BlockGuardOs.socket(BlockGuardOs.java:282)
05-13 08:03:56.062 8930-12196/com.web_server.webserver W/System.err:     at libcore.io.IoBridge.socket(IoBridge.java:608)
05-13 08:03:56.062 8930-12196/com.web_server.webserver W/System.err:    ... 13 more
05-13 08:03:56.063 8930-12196/com.web_server.webserver W/System.err: java.net.SocketException: socket failed: EACCES (Permission denied)
05-13 08:03:56.063 8930-12196/com.web_server.webserver W/System.err:     at libcore.io.IoBridge.socket(IoBridge.java:623)
05-13 08:03:56.063 8930-12196/com.web_server.webserver W/System.err:     at java.net.PlainSocketImpl.create(PlainSocketImpl.java:198)
05-13 08:03:56.063 8930-12196/com.web_server.webserver W/System.err:     at java.net.Socket.checkOpenAndCreate(Socket.java:687)
05-13 08:03:56.063 8930-12196/com.web_server.webserver W/System.err:     at java.net.Socket.setSoTimeout(Socket.java:541)
05-13 08:03:56.063 8930-12196/com.web_server.webserver W/System.err:     at com.android.okhttp.Connection.connect(Connection.java:147)
05-13 08:03:56.063 8930-12196/com.web_server.webserver W/System.err:     at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:276)
05-13 08:03:56.063 8930-12196/com.web_server.webserver W/System.err:     at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:211)
05-13 08:03:56.063 8930-12196/com.web_server.webserver W/System.err:     at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:373)
05-13 08:03:56.063 8930-12196/com.web_server.webserver W/System.err:     at com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:323)
05-13 08:03:56.063 8930-12196/com.web_server.webserver W/System.err:     at com.android.okhttp.internal.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:190)
05-13 08:03:56.063 8930-12196/com.web_server.webserver W/System.err:     at com.web_server.webserver.MainActivity.Get(MainActivity.java:324)
05-13 08:03:56.063 8930-12196/com.web_server.webserver W/System.err:     at com.web_server.webserver.MainActivity.access$300(MainActivity.java:34)
05-13 08:03:56.064 8930-12196/com.web_server.webserver W/System.err:     at com.web_server.webserver.MainActivity$1$1.run(MainActivity.java:94)
05-13 08:03:56.064 8930-12196/com.web_server.webserver W/System.err:     at java.lang.Thread.run(Thread.java:818)
05-13 08:03:56.064 8930-12196/com.web_server.webserver W/System.err: Caused by: android.system.ErrnoException: socket failed: EACCES (Permission denied)
05-13 08:03:56.064 8930-12196/com.web_server.webserver W/System.err:     at libcore.io.Posix.socket(Native Method)
05-13 08:03:56.064 8930-12196/com.web_server.webserver W/System.err:     at libcore.io.BlockGuardOs.socket(BlockGuardOs.java:282)
05-13 08:03:56.064 8930-12196/com.web_server.webserver W/System.err:     at libcore.io.IoBridge.socket(IoBridge.java:608)
05-13 08:03:56.064 8930-12196/com.web_server.webserver W/System.err:    ... 13 more
05-13 08:03:56.069 8930-12196/com.web_server.webserver W/System.err: java.net.SocketException: socket failed: EACCES (Permission denied)
05-13 08:03:56.069 8930-12196/com.web_server.webserver W/System.err:     at libcore.io.IoBridge.socket(IoBridge.java:623)
05-13 08:03:56.069 8930-12196/com.web_server.webserver W/System.err:     at java.net.PlainSocketImpl.create(PlainSocketImpl.java:198)
05-13 08:03:56.069 8930-12196/com.web_server.webserver W/System.err:     at java.net.Socket.checkOpenAndCreate(Socket.java:687)
05-13 08:03:56.069 8930-12196/com.web_server.webserver W/System.err:     at java.net.Socket.setSoTimeout(Socket.java:541)
05-13 08:03:56.069 8930-12196/com.web_server.webserver W/System.err:     at com.android.okhttp.Connection.connect(Connection.java:147)
05-13 08:03:56.069 8930-12196/com.web_server.webserver W/System.err:     at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:276)
05-13 08:03:56.069 8930-12196/com.web_server.webserver W/System.err:     at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:211)
05-13 08:03:56.069 8930-12196/com.web_server.webserver W/System.err:     at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:373)
05-13 08:03:56.069 8930-12196/com.web_server.webserver W/System.err:     at com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:323)
05-13 08:03:56.069 8930-12196/com.web_server.webserver W/System.err:     at com.android.okhttp.internal.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:190)
05-13 08:03:56.069 8930-12196/com.web_server.webserver W/System.err:     at com.web_server.webserver.MainActivity.Get(MainActivity.java:324)
05-13 08:03:56.069 8930-12196/com.web_server.webserver W/System.err:     at com.web_server.webserver.MainActivity.access$300(MainActivity.java:34)
05-13 08:03:56.069 8930-12196/com.web_server.webserver W/System.err:     at com.web_server.webserver.MainActivity$1$1.run(MainActivity.java:94)
05-13 08:03:56.069 8930-12196/com.web_server.webserver W/System.err:     at java.lang.Thread.run(Thread.java:818)
05-13 08:03:56.069 8930-12196/com.web_server.webserver W/System.err: Caused by: android.system.ErrnoException: socket failed: EACCES (Permission denied)
05-13 08:03:56.070 8930-12196/com.web_server.webserver W/System.err:     at libcore.io.Posix.socket(Native Method)
05-13 08:03:56.070 8930-12196/com.web_server.webserver W/System.err:     at libcore.io.BlockGuardOs.socket(BlockGuardOs.java:282)
05-13 08:03:56.070 8930-12196/com.web_server.webserver W/System.err:     at libcore.io.IoBridge.socket(IoBridge.java:608)
05-13 08:03:56.070 8930-12196/com.web_server.webserver W/System.err:    ... 13 more

第 324 行是:

InputStream in = new BufferedInputStream(urlConnection.getInputStream());

第 34 行:

public class MainActivity extends ActionBarActivity

第 94 行

response = Get(ipaddresses[i]);

解决方案是将这 3 行添加到 AndroidManifest.xml

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM