如何从客户端 - 服务器套接字连接中读取响应?

时间:2016-01-12 09:12:52

标签: java android sockets

我正在从我的Android APP执行shell命令。我能够执行命令但无法从服务器读取响应。 我的代码如下:

public String executeThroughSocket(int portNo, String portAddress, String command) throws IOException {

    StringBuilder responseString = new StringBuilder();

    PrintWriter writer = null;
    BufferedReader bufferedReader = null;
    Socket clientSocket = null;

    try {
        clientSocket = new Socket(portAddress, portNo);
        if (!clientSocket.isConnected())
            throw new SocketException("Could not connect to Socket");

        clientSocket.setKeepAlive(true);

        writer = new PrintWriter(clientSocket.getOutputStream(), true);
        writer.println(command);
        writer.flush();

        bufferedReader = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
        String str;
        while ((str = bufferedReader.readLine()) != null) {
            responseString.append(str);
        }

    } finally {
        if (writer != null)
            writer.close();
        if (bufferedReader != null)
            bufferedReader.close();
        if (clientSocket != null)
            clientSocket.close();
    }
    return responseString.toString();
}

2 个答案:

答案 0 :(得分:1)

您必须为套接字

设置超时

clientSocket .setSoTimeout(5000); // milisekundy

答案 1 :(得分:0)

我的代码没有问题。服务器没有发送任何响应。