【问题标题】:Communicate Android Device to Localhost (My Windows 8 PC) over / via USB Cable通过/通过 USB 电缆将 Android 设备与 Localhost(我的 Windows 8 PC)通信
【发布时间】:2013-09-04 07:00:33
【问题描述】:

我有 Android 设备 Samsung GT OS 2.2.1

我已成功通过 WIFI 向我的本地主机(我的 Windows 8 PC)发送 HTTP 请求

但是,考虑到速度,我还想学习“如何通过 USB 向我的 windows 8 PC 的本地主机发送 HTTP 请求”

这是我通过 WIFI 发送的代码

URL url = null;
        try {
            /*Wireless LAN adapter Local Area Connection*/
        url = new URL("http://192.168.xxx.xxx/MySkripsi/testWriteFile.php");
        String body = "";
        body += "text=" + messageTujuan;

        byte[] bytes = body.getBytes();
        HttpURLConnection conn = null;
        conn = (HttpURLConnection) url.openConnection();
        conn.setDoOutput(true);
        conn.setRequestMethod("POST");
        conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded;charset=UTF-8");
        OutputStream  out = conn.getOutputStream(); 
        out.write(bytes);
        out.close();
        int status = conn.getResponseCode();

        if (status != 200) {
            Toast.makeText(con, "status = " + status , 0).show();
        }
        else
        {
            InputStream is = conn.getInputStream();

            BufferedReader reader = new BufferedReader(new InputStreamReader(is));
            StringBuilder sb = new StringBuilder();
            String line = null;
            try {
                while ((line = reader.readLine()) != null) {
                    sb.append((line + "\n"));
                }
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    is.close(); 
                } catch (IOException e) {
                    e.printStackTrace(); 
                }
            }
            Toast.makeText(con, "Return Nya = " +sb.toString(), 0).show();
            Log.v("TEST" , "Return Nya = " + sb.toString());
            tv.setText(sb.toString());
            is.close();
        }

    } catch (Exception e) {
        Toast.makeText(this, e.toString() + "#" + e.getMessage(), 0).show();
    }

这段代码,给我结果

但是每当我关闭 WIFI 时 它显示了

“java.net.SocketException:网络不可达”

所以我通过一些网站研究它,我发现了这个

http://www.codeproject.com/Articles/191930/Android-Usb-Port-Forwarding

这里是打印屏幕

http://imgur.com/QmHToQU

我的安卓设备中的 USB 隧道也显示“服务正在运行,已连接!”

但是,使用与上面相同的代码, 除了:

url = new URL("h**p://127.0.0.1:80/MySkripsi/testWriteFile.php");

结果是 “java.netConnectException :/127.0.0.1:80 - 连接被拒绝”

我认为我的防火墙有问题,但我不知道如何修复它

所以我的问题是

还有其他方法可以用来在android和服务器之间进行通信吗?

我真的需要 我的 android 设备发送数据到我的本地主机(Windows 8 电脑)作为我的服务器 并通过 USB 接收服务器的响应

谢谢..

【问题讨论】:

  • 127.0.0.1 始终是“此设备”,无论它在哪个设备上。如果您尝试从 Android 设备打开它,它将尝试联系 Android 设备本身,而不是您的 Windows 机器。您必须使用服务器的 IP 地址。
  • 在我的 ipconfig 中它说 192.168.11.1 作为无线 LAN 适配器本地连接和 192.168.45.179 作为以太网适配器以太网。我试过 url=new URL("hp://192.168.45.179:80/MySkripsi/testWriteFile.php");和 url=new URL("hp://192.168.11.1:80/MySkripsi/testWriteFile.php");和 url=new URL("hp://192.168.45.179/MySkripsi/testWriteFile.php");和 url=new URL("hp://192.168.45.179/MySkripsi/testWriteFile.php"); ,但所有内容都显示“网络无法访问”
  • 您需要了解基本的 TCP/IP 网络; Network unreachable 表示您的 IP 地址不在同一个子网上,并且您没有可用的路由器。如果ping 不起作用,那么您的 HTTP 连接也将不起作用。

标签: java android windows usb localhost


【解决方案1】:

感谢@Ram 和@chyrlis

我想分享它,也许它会帮助其他人

所以我到处用谷歌搜索,他们都告诉我有关 USB 系绳的事

这是我为解决自己的问题所做的事情

  1. 在我的电脑中,我输入 cmd > ipconfig

我的安卓设备没有以太网

  1. 我打开“USB TETHERING”(我使用的是 Android Froyo GT-S5830) (请注意,当我用谷歌搜索时,他们都告诉我并非每个设备都有“USB TETHERING”)

  2. 然后我再次输入 cmd > ipconfig

我的安卓设备有一个以太网,ip = 192.168.42.201 (注意这个IP是动态的[DHCP],所以也许你可以先把它改成静态的) 这是教程 http://www.youtube.com/watch?v=SIYyRYdV7B8

所以我把我的 IP 改成了 192.168.42.202

  1. 使用我自己的代码

我把网址改成了

"url = new URL("http://192.168.42.202/MySkripsi/testWriteFile.php");" 

注意 192.168.42.201 是我从 ipconfig 获得的 IP 我将我的 IP 更改为 192.168.42.202 所以它将是静态 IP

  1. 和 BAM 好了,我可以从我的设备使用我的 http 请求并从我的服务器获取响应

希望对你有帮助

【讨论】:

    【解决方案2】:

    好吧,我开发了一个连接我的 jsp 文件的应用程序。这里是示例代码。

                  try
                     {
    
                        URL url = new URL("http:/xx.xxx.xxx.x:80/sample.jsp");
                        HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
                         InputStream in = new BufferedInputStream(urlConnection.getInputStream());
                         BufferedReader r = new BufferedReader(new InputStreamReader(in));
                         String x = "";
                         String total = "";
                         int i=0;
                         ArrayList<String> content = new ArrayList();
                         while((x = r.readLine()) != null)
                         {
                                     content.add(x);
    
                         }
                         in.close();
                         r.close();
                     }
                     catch(Exception e)
                     {
                         e.printStackTrace();
                         Toast.makeText(Customer.this, e.toString(), Toast.LENGTH_SHORT).show();
                     }
    

    因此,您可以根据需要更改(在 url 中)此代码。如果您想在 USB 中运行,则必须将三星 USB 驱动程序下载到您的 PC 上,然后运行该应用程序。在此之前,您启用开发人员您设备中的选项。

    【讨论】:

    • 我认为您的代码与我的 Ram 相同,看来我的问题是我的设备无法通过 usb 发送 http,但谢谢大佬
    • @Yogie Soesanto Over USB 意味着,USB 调制解调器?。
    • USB线,连接PC和Android设备
    • @Yogie Soesanto 您如何运行您的应用程序?手动将您的 apk 放入设备中还是使用 IDE 直接在设备中运行?..
    • 我用的是eclipse,所以我猜是IDE,然后右键运行app
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-17
    • 2015-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-18
    相关资源
    最近更新 更多