小编leo*_*994的帖子

如何写入stdIn(JAVA)

我想通过使用一些输入来对我的P2P系统进行一些测试:"join 8".8是节点号.对于我的系统,从stdin读取命令"join 8",但我不想为百次测试输入百次,所以我编写了一个测试函数来随机生成节点编号,然后调用"join"命令本身.所以我希望JAVA编写命令而不是我自己的输入到stdin.我怎样才能做到这一点?目标是:当我输入"test join 3"时,代码应该在1-255之间随机生成3个节点号,并为它们调用join命令.我的代码现在不能正常工作:

if (command[0].equals("test")) {
            //test join
            if (command[1].equals("join")) {
                int nodenum = Integer.parseInt(command[2]);
                Random rand = new Random();
                Set<Integer> generated = new LinkedHashSet<Integer>();
                while (generated.size() < nodenum) {
                    Integer next = rand.nextInt(255) + 1;
                    generated.add(next);
                    ProcessBuilder builder = new ProcessBuilder("java", "Test");
                    Process process = builder.start();
                    //stdIn=new BufferedReader(new InputStreamReader("join"));
                    OutputStream stdin = process.getOutputStream();
                    InputStream stdout = process.getInputStream();


                    BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(stdin));
                    writer.write("join "+next);
                    writer.flush();
                    writer.close();

                }


            }

        }
Run Code Online (Sandbox Code Playgroud)

java stdin stdout

2
推荐指数
1
解决办法
3952
查看次数

标签 统计

java ×1

stdin ×1

stdout ×1