我试图在Android平板电脑上执行交互式二进制文件。
我可以很好地执行服务器二进制文件并且它可以正常工作。
但是我需要在指定端口的CLI上与它进行交互,我需要向它发送命令并接收响应,处理响应并发送另一个命令作为回复。
例如:
$nc 192.168.1.1 8111
>Connected to CLI
$Request Server Status
>Server Sending File to Client X
$Stop Server
>Server Stopped
其中$ command表示我发送的命令,> command是来自服务器的回复。
为了测试这个,我尝试了以下功能: -
private String TryExecuteCommand(String command) {
try {
proc = Runtime.getRuntime().exec("nc 127.0.0.1 8888");
BufferedReader reader = new BufferedReader(new InputStreamReader(proc.getInputStream()));
int read;
char[] buffer1 = new char[4096];
StringBuffer output = new StringBuffer();
DataOutputStream writer = new DataOutputStream(proc.getOutputStream());
writer.writeBytes("continuous responses" + "\n");
Thread.sleep(2000);
writer.writeBytes("quit" + "\n");
while ((read = reader.read(buffer1)) > 0)
output.append(buffer1, 0, read);
proc.waitFor();
reader.close();
if (dataLines.length > 0)
return dataLines.toString();
else
return "";
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return "Error occured";
}
使用此代码,我可以在" 退出"之后获得输出。发出命令。但是,如果我在退出之前尝试读取响应,则会出现EPIPE损坏错误。
感谢任何帮助:)