Android套接字等待问题

时间:2017-12-14 14:32:17

标签: java android sockets android-asynctask

您好我有一个使用套接字连接到远程服务器的应用程序

socket = new Socket();
socket.connect(new InetSocketAddress(Ip, portNum), 7000);

我有两种方法发送&收到

发送方案是

 PrintWriter out = new PrintWriter(socket.getOutputStream(),true);
方法接收中的

  String msg = "";
    BufferedReader in = null;

    try {
        in = new BufferedReader(new InputStreamReader(socket.getInputStream()));


        while (in.ready()) {

            msg = msg + (char) in.read();

        }
        socket.close();

    } catch (IOException e) {
        e.printStackTrace();
    }

在我调用的另一个类的AsyncTask中

 send();
 String response=receive();

上述代码没有等待期间发送或接收

    Thread.sleep(2000);

我知道睡眠是一种糟糕的方法 我应该使用什么样的最佳方案?

在send方法中创建AsyncTask和在receive方法中创建另一个AsyncTask是否更好。

这是我使用睡眠的地方以及发送的数据和信息。收到

 client.send(some sql statement representED as json format);
        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
// sql select result represented as json
        String RESULT = client.recive();

1 个答案:

答案 0 :(得分:1)

在您尝试连接之前,您的服务器可能没有正在侦听。虽然您发布的代码中不清楚这一点。您需要在那里显示服务器和客户端代码。