Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
客户端-服务器程序,可以从Java客户端连接,但不能从Android连接_Java_Android_Sockets_Networking_Socket Timeout Exception - Fatal编程技术网

客户端-服务器程序,可以从Java客户端连接,但不能从Android连接

客户端-服务器程序,可以从Java客户端连接,但不能从Android连接,java,android,sockets,networking,socket-timeout-exception,Java,Android,Sockets,Networking,Socket Timeout Exception,我有一个工作的Java客户机/服务器程序,非常简单和基本。这个很好用。但是,我现在正在尝试编写一个Android客户端,我无法从Android客户端连接到服务器。我使用的android网络代码与普通客户端的代码几乎相同。我的android代码很简单,它所做的只是从onCreate启动此线程: private int serverPort = 8889; private String serverIP = "192.168.5.230"; private Socket socket = null;

我有一个工作的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设备上运行此代码时,当我尝试连接时,套接字超时


有人对我的错误有什么建议吗?

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

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


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

您的android设备是否已连接到网络?不是对计算机,而是对网络……澄清一下,这个答案的底部部分就是解决我问题的原因。我错误地认为我的电话网络能够连接到我的计算机在Wesome上运行的网络!很高兴我能帮忙!