Java Android客户端套接字不工作

Java Android客户端套接字不工作,java,android,sockets,Java,Android,Sockets,我错过了什么吗。我已经检查了其他帖子,并在我的清单中设置了这些 <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 这是我在runnable中启动套接字的类 private class SendThread implements Runnable {

我错过了什么吗。我已经检查了其他帖子,并在我的清单中设置了这些

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
这是我在runnable中启动套接字的类

private class SendThread implements Runnable {

    @Override
    public void run() {
        try {
            Socket s = new Socket("10.0.2.2", 4736);       <---never gets past this
            PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(s.getOutputStream())), true);
            out.println(sendString);
            new BufferedReader(new InputStreamReader(s.getInputStream()));
            Log.d(TAG, "sent");
            s.close();
        } catch (Exception e) {
            Log.d(TAG, "error");
            e.printStackTrace();
        }
        Log.d(TAG, "end");
    }

}

好的,是的,服务器端套接字没有侦听

是否有人在IP
10.0.0.2
和端口
4736
上侦听?您所说的“它永远不会越过这一行”是什么意思?它会引发异常吗?如果是这样的话,什么是异常?@Marc它甚至没有抛出一个异常,这正是困扰我的。这是连接到一个点击甚至,我只是点击按钮,试图发送一个简单的字符串现在。我可以一遍又一遍地点击,每次都会停在同一个地方,没有异常。@Tichodroma好的,如果我坐在那里几分钟,我终于看到套接字超时,所以服务器端没有监听。感谢Tichodroma10.0.2.2是承载android仿真器的开发机器的环回接口的唯一别名。实际设备上不存在该功能。您必须在wifi上使用实际的网络地址,或通过(ab)使用栓系来连接本地服务器。
private class SendThread implements Runnable {

    @Override
    public void run() {
        try {
            Socket s = new Socket("10.0.2.2", 4736);       <---never gets past this
            PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(s.getOutputStream())), true);
            out.println(sendString);
            new BufferedReader(new InputStreamReader(s.getInputStream()));
            Log.d(TAG, "sent");
            s.close();
        } catch (Exception e) {
            Log.d(TAG, "error");
            e.printStackTrace();
        }
        Log.d(TAG, "end");
    }

}
private class ReceiveThread implements Runnable {
    private ServerSocket receiverSocket;
    private BufferedReader input;
    private Socket socket = null;

    public void run() {
        try {
            receiverSocket = new ServerSocket(receivePort);
            receiverSocket.setReuseAddress(true);
            while (killConnection == false) {
                Log.d(TAG, "listening");
                socket = receiverSocket.accept();
                this.input = new BufferedReader(new InputStreamReader(this.socket.getInputStream()));
                Log.d(TAG, "Input from server" + input.toString());
                String s = input.readLine();
                //UpdateUi(s);
                socket.close();
            }
            receiverSocket.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}