- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试编写一个在cmd中执行tracert的node.js脚本,并且我想解析tracert的输出以便能够在node中使用。我的问题是我收到的输出不一致。
let argument = process.argv[2] /* what the user enters as first argument */
const { spawn } = require('child_process');
const command = spawn(process.env.comspec, ['/c', 'tracert', argument])
command.stdout.on('data', (data) => {
console.log(`stdout: ${data}`);
});
tracert 在每一行、每一跳上以这种格式输出。
1 5 ms 6 ms 4 ms 192.168.1.1
console.log 的预期输出应该是:
stdout: 1
stdout: 5 ms
stdout: 6 ms
stdout: 4 ms
stdout: 192.168.1.1
事实上,大约 90% 的情况下都会发生这种情况,但有时数据传入的速度太快,以至于有些行会像这样聚集在同一行上
stdout: 1
stdout: 5 ms
stdout: 6 ms 4 ms
stdout: 192.168.1.1
我不希望这种事发生。我希望每次数据变量进入时,它只包含每个“列”中的“一个元素”
最佳答案
遗憾的是,您无法强制 tracert
逐列发送数据。此外,当您的进程速度不够快,无法从管道读取列时,您不能强制操作系统不“加入”缓冲区中的列。
唯一可能的解决方案是等到整行准备好然后才解析它。 Stg 像这样(警告,这只是伪代码)。
let bufffer = "";
command.stdout.on('data', (data) => {
buffer = buffer + data;
while (buffer.indexOf('\n') != -1) { // loop because in some cases you can even receive many lines
const idx = buffer.indexOf('\n');
const line = buffer.substr(0, idx).trim(); // get line and trim extra whitespace
buffer = buffer.substr(idx+1); // rest of buffer, usually empty string
// now parse line with regexp or something
const match = /(\d+) (\d+) ms +(\d+) ms +(\d+) ms ([^ ]+)/.match(line);
if (match) {
...
}
}
});
关于node.js - 使用node.js在cmd中执行 'tracert',但我的输出不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56265325/
tracert 返回请求的超时。我从中了解到的是数据包在网络上的某些地方丢失了。 这是否意味着问题出在 ISP 或托管服务提供商或我的 Windows 系统上? 10 * *
我是 Python 新手,正在尝试编写我的第一个程序。 我想要做的是通过在输出上添加日期来修改 Windows tracert 命令输出。 c:\Python\Codes>more tr.py imp
我需要创建跟踪路由作为 .NET 应用程序的一部分以支持故障排除。我已经弄清楚如何使用 .NET Ping 类进行跟踪。我不明白命令行实用程序报告的数字是什么。这是来自 Windows 命令行的“tr
我想寻求一些有关Windows中tracert输出的帮助,即我有这个输出: Tracing route to Y.Y.Y.Y over a maximum of 30 hops 1 1 ms
我想知道为什么 PathPing 比 Tracert 快。我用谷歌搜索了很多,但对我找到的答案并不满意,大多数答案都谈到了它的功能,但没有谈到为什么它比 tracert 更快。 Tracert 通过增
我正在尝试编写一个在cmd中执行tracert的node.js脚本,并且我想解析tracert的输出以便能够在node中使用。我的问题是我收到的输出不一致。 let argument = proces
我正在使用 PSVersion 2.0我想知道是否有等效于 traceroute为了它? 我知道在 PowerShell v4有 Test-NetConnection cmdlet 可以做 trace
我有两台电脑,一台 Windows 和一台 Linux 并排坐在我的 table 上,都连接到同一个互联网。如果我在 www.stackoverflow.com 和 traceroute www.st
我是一名优秀的程序员,十分优秀!