在 IntelliJ IDEA 中配置 2 节点模拟
Configuring a 2-node simulation in IntelliJ IDEA
我想在 IntelliJ 中设置网络模拟 IDEA。为此,我正在尝试配置 IDE 以使用包中包含的 2-node-network.groovy 脚本。我可以 运行 模拟脚本并通过 Web 界面访问调制解调器,但是一些 shell 命令如 'tell'、'host' 等将不起作用。
到目前为止我采取的步骤:
在IDE配置一个环境变量指向Unetstack主目录(unet_home=.../unet-3.0.0/)
使用从 2-node-network.groovy 脚本复制的代码在 IDE 中创建了新的 运行 配置,但更改了 home 变量:
import org.arl.fjage.RealTimePlatform
def unet_home = System.getenv("unet_home");
println(unet_home)
println '''
2-node network
--------------
Stack:
Node A: tcp://localhost:1101, http://localhost:8081/
Node B: tcp://localhost:1102, http://localhost:8082/
'''
platform = RealTimePlatform // use real-time mode
// run the simulation forever
simulate {
node 'A', location: [ 0.km, 0.km, -15.m], web: 8081, api: 1101, stack: "$unet_home/etc/setup"
node 'B', location: [ 1.km, 0.km, -15.m], web: 8082, api: 1102, stack: "$unet_home/etc/setup"
}
Web shell 输出:
> mac
<<< CSMA >>>
[org.arl.unet.mac.CSMAParam]
maxBackoff = 30.0
minBackoff = 0.5
phy = phy
reservationsPending = 0
[org.arl.unet.mac.MacParam]
ackPayloadSize = 0
channelBusy = false
maxReservationDuration = 600.0
recommendedReservationDuration = 15.0
reservationPayloadSize = 0
> tell host('A'), "Hello"
Unknown method: host(...)
> tell
Unknown command or property: tell
>
在 shell 启动过程中,命令从 etc/fshrc.groovy
文件加载。好像是这个文件执行失败了,可能是找不到。
用于查找 etc
的初始化脚本使用的系统 属性 是 unet.home
(不是 unet_home
)。这通常在 bin/unet
shell 脚本中从环境变量 UNET_HOME
启动时设置 Java:
java -Dunet.home="$UNET_HOME" ...
如果你使用shell脚本来运行你的模拟,你应该设置环境变量UNET_HOME
(区分大小写)指向你的unet-3.0.0
文件夹,其中包含 etc/
文件夹。如果你自己直接运行java
,你应该像上面那样设置系统属性unet.home
在您的模拟脚本中,您可以检查是否设置正确:
println(System.getProperty('unet.home'))
帮你调试。
我想在 IntelliJ 中设置网络模拟 IDEA。为此,我正在尝试配置 IDE 以使用包中包含的 2-node-network.groovy 脚本。我可以 运行 模拟脚本并通过 Web 界面访问调制解调器,但是一些 shell 命令如 'tell'、'host' 等将不起作用。
到目前为止我采取的步骤:
在IDE配置一个环境变量指向Unetstack主目录(unet_home=.../unet-3.0.0/)
使用从 2-node-network.groovy 脚本复制的代码在 IDE 中创建了新的 运行 配置,但更改了 home 变量:
import org.arl.fjage.RealTimePlatform
def unet_home = System.getenv("unet_home");
println(unet_home)
println '''
2-node network
--------------
Stack:
Node A: tcp://localhost:1101, http://localhost:8081/
Node B: tcp://localhost:1102, http://localhost:8082/
'''
platform = RealTimePlatform // use real-time mode
// run the simulation forever
simulate {
node 'A', location: [ 0.km, 0.km, -15.m], web: 8081, api: 1101, stack: "$unet_home/etc/setup"
node 'B', location: [ 1.km, 0.km, -15.m], web: 8082, api: 1102, stack: "$unet_home/etc/setup"
}
Web shell 输出:
> mac
<<< CSMA >>>
[org.arl.unet.mac.CSMAParam]
maxBackoff = 30.0
minBackoff = 0.5
phy = phy
reservationsPending = 0
[org.arl.unet.mac.MacParam]
ackPayloadSize = 0
channelBusy = false
maxReservationDuration = 600.0
recommendedReservationDuration = 15.0
reservationPayloadSize = 0
> tell host('A'), "Hello"
Unknown method: host(...)
> tell
Unknown command or property: tell
>
在 shell 启动过程中,命令从 etc/fshrc.groovy
文件加载。好像是这个文件执行失败了,可能是找不到。
用于查找 etc
的初始化脚本使用的系统 属性 是 unet.home
(不是 unet_home
)。这通常在 bin/unet
shell 脚本中从环境变量 UNET_HOME
启动时设置 Java:
java -Dunet.home="$UNET_HOME" ...
如果你使用shell脚本来运行你的模拟,你应该设置环境变量UNET_HOME
(区分大小写)指向你的unet-3.0.0
文件夹,其中包含 etc/
文件夹。如果你自己直接运行java
,你应该像上面那样设置系统属性unet.home
在您的模拟脚本中,您可以检查是否设置正确:
println(System.getProperty('unet.home'))
帮你调试。