通过wifi在PC和手机之间进行Android :: socket通信?

时间:2013-09-15 09:05:30

标签: android sockets

我有一个工作代码,我可以在PC和Android模拟器之间交换数据。现在,我想用真正的Android设备测试这个应用程序。即我想在我有一台java服务器和Android手机的电脑之间交换文字。对于我的模拟器我使用模拟器虚拟IP地址,它工作正常。但是,为了在手机中测试我的应用程序,我在同一网络中连接了手机和电脑,并在我的应用程序中使用了手机的IP地址。然后我在手机中安装了应用程序,但连接没有建立。如何在代码中进行其他更改以在手机中使用此应用程序。这是我的安卓代码,

try {
        client = new Socket("123.236.165.50", 9999);
        printwriter = new PrintWriter(client.getOutputStream(), true);
        printwriter.println(messsage[0] + "\n");
        System.out.println("messsage::"+messsage[0]);
        printwriter.flush();
        BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));

                serverMessage = in.readLine();
                if (serverMessage.equals("exit")) {
                    runOnUiThread(new Runnable() {
                        public void run() {
                            tv.setText("Thankyu visit again!!" + "\n");
                        }
                    });                     }   
                else {
                runOnUiThread(new Runnable() {
                    public void run() {
                        tv.setText(serverMessage.toString() + "\n");
                    }
                });

        }
     }
    } catch (UnknownHostException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    return null;

此外,我已在我的清单文件中提供此权限:

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

这是我的第一个Android应用程序,所以请帮助!!!

1 个答案:

答案 0 :(得分:2)

确保Android和PC都具有相同的子网。

我更喜欢您第一次使用USB线连接并在cmd端口转发中运行:

adb forward tcp:7612 tcp:7612

端口7612我是随机拍摄的。

配置您的代码以使用此端口,例如:

client = new Socket("127.0.0.1", 7612);

通过这种方式,您可以验证其不是WiFi问题,而是使用您的代码。

如果通过USB全部按预期工作,请尝试找出WiFi问题。

希望它会对你有帮助,