【问题标题】:Client-Server Program, can connect from Java client but not from Android客户端-服务器程序,可以从 Java 客户端连接,但不能从 Android 连接
【发布时间】:2013-03-21 03:56:27
【问题描述】:

我有一个非常简单和基本的工作 Java 客户端/服务器程序。这工作正常。但是,我现在正在尝试编写一个 Android 客户端,但我无法从我的 android 客户端连接到服务器。我对 android 网络代码使用几乎与普通客户端相同的代码。我的 android 代码很简单,它所做的只是从 onCreate 开始这个线程:

private int serverPort = 8889;
private String serverIP = "192.168.5.230";
private Socket socket = null;

private Thread clientThread = new Thread("ClientThread") {
    @Override
    public void run() {
        try {
            socket = new Socket();
            socket.connect(new InetSocketAddress(serverIP, serverPort), 1000);
            DataInputStream din = new DataInputStream( socket.getInputStream());
            DataOutputStream dout = new DataOutputStream(socket.getOutputStream());

            while (true) {
                String message = din.readUTF();
                setPicture("picture1");
            }
        } catch (UnknownHostException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }       
    }
};

端口是我的服务器正在运行的正确端口,IP 地址也是如此(我从 ifconfig 获得,因为我知道你不能使用 localhost)。当我使用相同的端口和 IP 地址运行我的普通 pc 客户端时,连接会通过。但是当我在我的 android 设备上运行此代码时,当我尝试连接时套接字超时。

有人对我哪里出错有任何建议吗?

【问题讨论】:

  • 你的安卓设备连接到网络了吗?不是电脑,而是网络……

标签: java android sockets networking socket-timeout-exception


【解决方案1】:

仔细检查您是否在清单文件中添加了权限要求:

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

但是,可能更重要的是,192.168.xx 是一个本地或不可路由的网络,因此您需要位于同一网络上,或者知道如何到达 192.168.5.230 地址的网络。您说在设备上尝试时它不起作用-您是在运行时在本地wifi上运行还是在移动网络上运行?如果您使用移动设备,请通过 wifi 尝试。

【讨论】:

  • 澄清一下,这个答案的底部是解决我的问题的原因。我错误地认为我的电话网络能够连接到我的计算机正在运行的网络
  • 太棒了!很高兴我能帮上忙!
猜你喜欢
  • 1970-01-01
  • 2019-02-28
  • 2016-07-06
  • 2015-05-21
  • 1970-01-01
  • 2016-09-27
  • 2017-12-29
  • 1970-01-01
  • 2019-03-17
相关资源
最近更新 更多