我的任务是使用文件(无套接字或线程)实现距离矢量多播路由协议(DVMRP)。我将有三个java程序
测试程序是:
test1.sh看起来像:
rm -f lan? hout? hin?
rm -f rout?
router 0 0 1 &
router 1 1 2 &
router 2 2 3 &
router 3 3 0 &
controller host router 0 1 2 3 lan 0 1 2 3&
这里包含
的行router 0 0 1 &
表示从可执行文件“router”(基本上是Router.java)创建进程,并在后台运行它,输入0 0 1,&我想是以bash模式说它。
同样是下一行
router 1 1 2 &
表示从可执行文件“router”(基本上是Router.java)创建另一个进程,并在后台运行输入1 1 2。
同样,行:
controller ...
表示从可执行文件“controller”(基本上是Controller.java)创建另一个进程,并在后台运行相应的输入。
怎么做?对不起早先的混淆:)
答案 0 :(得分:4)
首先编译java程序:
javac Router.java
您应该像这样调用java:
java Router 0 0 1 &
您可以找到Hello World example here
编辑:我仍然不完全确定我明白您要做的是什么,但您可能会尝试将上述test1.sh更改为:
rm -f lan? hout? hin?
rm -f rout?
java Router 0 0 1 &
java Router 1 1 2 &
java Router 2 2 3 &
java Router 3 3 0 &
java Controller host router 0 1 2 3 lan 0 1 2 3&
这将产生4个Router实例和一个Controller实例。 这假定您已首先编译程序:
javac Router.java Controller.java Host.java
答案 1 :(得分:0)
如果我理解正确,你有一个名为Router.java
的Java程序,它接受参数,你想在后台运行它。
如果我的假设是正确的,那么你需要做一些事情:
编译你的程序:
javac Router.java
运行程序:
java Router 0 0 1 &
在阅读(并再次阅读)您的问题和评论之后,我认为您的问题是您不知道如何从命令行将参数传递给Java程序。如果那是你的问题,你应该记住main
函数有一个args
参数,这是一种从命令行向程序传递值的方法。 args
变量是您可以在代码中使用的String
个对象数组:
public class Router {
/*
* Your methods go here
*/
public static void main(String[] args) {
/*
* The 'args' variable holds the arguments entered in the command line
*/
if(args[0].equals("a")) {
/*
* This is an example of how to read the arguments supplied in the command line.
*/
}
}
}