嗨我需要在ping应用程序之前设置时间。基本上我必须减少或增加设置的默认时间。下面是我的代码
var sys = require('sys'),
exec = require('child_process').exec;
var pingCmd = "ping " + "127.0.0.1";
var result = '';
function puts(error, stdout, stderr) {
if (error) {
console.log("error", "Error connecting");
result = "Failed";
console.log(result)
}
else {
sys.puts(stdout)
result = "Success"
console.log(result)
}
}
exec(pingCmd, puts);
以下是我的输出
Pinging 127.0.0.1 with 32 bytes of data:
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Ping statistics for 127.0.0.1:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
Success
我被困在如何设定时间。任何有关此问题的解决方案都会有所帮助。
答案 0 :(得分:0)
快速解决方案:正如您的评论中所述,您正在寻找一种方法来影响要发送的数据包之间的时间。只要您选择创建子进程,这仅仅是如何参数化ping
命令的问题。使用命令行shell,您将使用:
$ ping -i 2 127.0.0.1
使用-i
参数,ping之间的时间从一个(默认)提升到两秒。但是你需要root权限才能将时间缩短到几分之一秒:
$ sudo ping -i 0.1 127.0.0.1
小心!使用ICMP数据包淹没网络可能会对网络可用性产生影响,防火墙通常会将此视为DOS攻击。如果熟悉shell,请使用$ man ping
来收集有关ping命令的更多信息 - &#34; man&#34;在处理unix命令时,它总是你的朋友。
您的JS代码当然必须修改如下:
...
var pingCmd = "ping -i 2 127.0.0.1";
...
您还可以在循环内为每个ping请求创建子进程,您可以通过编程方式控制进程执行之间的不活动时间。然后,您将使用$ping -c 1
,这会导致进程只发送一个数据包。
或者您可以尝试使用 net-ping 等原生npm包。这使您可以更灵活地以编程方式影响ping行为,并且您不必创建子进程。