在为一个类构建P2P应用程序的过程中,我在一个ant构建文件中启动一些对等体,然后以“交互”模式启动它。
关于该任务的ant文档指出,自ant-1.6.3
以来,人们可以与分叉应用程序进行交互读取输入的代码是:
while (true) {
System.out.println("> ");
BufferedReader br = new BufferedReader(new InputStreamReader(
System.in));
String cmd = "";
try {
cmd = br.readLine();
System.out.println(cmd + "hier");
if (cmd == null)
continue;
if (cmd.equals("hello")) {
System.out.println("Port: ");
int bsPort = new Integer(br.readLine());
System.out.println("IP (blank for localhost): ");
String bsIp = br.readLine();
if (bsIp.equals(""))
bsIp = "127.0.0.1";
bootstrap(bsIp, bsPort);
}
else if (cmd.equals("plist")) {
plist();
}
else if (cmd.equals("nlist")) {
nlist();
}
else {
System.out.println("Command was read as: " + cmd);
}
} catch (IOException ioe) {
System.out.println("IO error trying to read your command!");
System.exit(1);
}
相关的蚂蚁任务是:
蚂蚁任务显然不会被SO显示,但它基本上是一个java fork =“false”块。
值得注意的是,我并行运行根和后续对等 - >守护进程阻止它们在后台运行。这些是分叉的。
我尝试过fork =“true”和fork =“false”(找到一条说明将其设置为false的链接) - 两者都无济于事。
我找到了一个链接,说我可以使用TimedBufferedReader,但为了取悦蚂蚁,我有点谨慎......
答案 0 :(得分:0)
似乎守护程序任务劫持了System.in。在那些上设置一个inputstring =“”参数阻止他们这样做,让我与交互式客户端进行交互。
只是为了让其他人知道,如果通过System.out.print而不是System.out.println输出,那么在给出输入之后就不会看到输出...