与Android中的Executed binary交互

时间:2014-04-25 13:13:51

标签: android binaryfiles

我试图在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损坏错误。

感谢任何帮助:)

0 个答案:

没有答案