Java 如何从客户端-服务器套接字连接读取响应?
我正在从我的Android应用程序执行shell命令。我能够执行命令,但无法从服务器读取响应。 我的代码如下:Java 如何从客户端-服务器套接字连接读取响应?,java,android,sockets,Java,Android,Sockets,我正在从我的Android应用程序执行shell命令。我能够执行命令,但无法从服务器读取响应。 我的代码如下: public String executeThroughSocket(int portNo, String portAddress, String command) throws IOException { StringBuilder responseString = new StringBuilder(); PrintWriter writer = null;
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();
}
我的代码没有问题。服务器没有发送任何响应。您必须为套接字设置超时
clientSocket.setSoTimeout(5000);//milisekundy是由您编写的执行您的命令的服务器吗?如果是,你也可以发布代码。似乎阻塞发生在一些调试输出或在调试中运行,并突出显示挂起的行。很可能像readLine()这样的东西永远找不到行尾或like@premkumar服务器不是我开发的。我认为从服务器端看,没有任何东西可以被读取。对于调试:bufferedReader.readLine()返回null.well-如果服务器没有发送任何内容,您将无法读取。我猜是这样。我没有服务器的源代码,因此无法确定服务器是否反映。您应该解释,为什么您的代码片段有助于改进答案。添加超时不会得到响应,只需引发超时异常即可。