java - 提高telnet连接读取输入速度

标签 java performance telnet

我编写了一种“期望”类型的实现,用于向路由器发送命令。

我观察到的是,连接输入的处理速度要慢得多。

我的代码如下,

public static String expect(String expectString) {
        try {
            int c = 0;
            while ((c = br.read()) != -1) {
                expectBuffer.append((char) c);
                System.out.print((char) c);
                if (expectBuffer.toString().contains(expectString)) {
                    break;
                }
            }
            String expBuff = expectBuffer.toString();
            expectBuffer.setLength(0);
//            System.out.println(expBuff);
            return expBuff;
        } catch (Exception e) {
            return "";
        }

    }

    public static void send(String cmd) {
        pw.print(cmd + "\r");
        pw.flush();
    }

main 中,我按如下方式调用它们,

            socket = new Socket();
            socket.connect(new InetSocketAddress(server, 23), 10000);//Will wait for 10 seconds
            socket.setKeepAlive(true);
            socket.setSoTimeout(10000);
            expectBuffer = new StringBuilder();
            br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            pw = new PrintWriter(socket.getOutputStream(), true);
            expect("Login");
            send("dinesh");
            expect("Password");
            send("stack");
            expect(server + "#");
            send("some command here");
            expect(server + "#");

处理输入并在控制台中打印相同的内容需要很长时间。

任何人都可以提供有关改进我的代码的建议吗?

提前致谢。

最佳答案

使用InputStream的int read(byte[] b)函数,而不是int read()。

这将大大加快读取速度,因为信息到达的包大于 1。

关于java - 提高telnet连接读取输入速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17528371/

相关文章:

java - 在 HashMap 中 remove() 比 get() 快吗?

java - 使用访问器/ getter 可以更快吗?

Java - socket.isConnected 使用端口 80 对任何 IP 地址返回 true

delphi - 如何使用 TO Telnet 抑制回声?

java - Gradle:多项目依赖:同名任务一起执行

Java 8 不带时间成分的日差

java - 是否有可能检测到输出的去向 - 终端或管道/文件?

java - jdk1.8.0 中的 NoSuchMethodException : for sun. misc.Launcher$AppClassLoader.addAppURL(java.net.URL)

css - 最佳实践 - 只下载您需要的 CSS,还是使用缩小过程?

Python Telnetlib read_until '#' or '>' 多字符串判断?