Open SunBK201 opened 2 years ago
Hi SunBK201,
这个玩意儿可能会被叫做 NextMTR 独立成项目,因为 NextTrace 在编写之初没有按照 MTR 的逻辑去编写,所以如果现在要改的话,底层逻辑要全部大改,会导致已经非常稳定的 NextTrace 再次回归 Bug 满天飞的 Alpha 版本。
另外,做 MTR 最大的难点在于终端窗口的实时刷新,每次要对终端的内容清空并重新绘制,样式也比较难控制,每个字符在终端的位置不能每次刷新都乱跑,所以要单独创建一个专门用于终端显示控制的模块。
非常感谢
以下是 Alpha Preview Version
mtr 版本现在已经有了 Alpha 版本,目前还是有很多需要细节完善的地方,暂时不能开放公测,如果感兴趣,欢迎来尝鲜。
以下是 Alpha Preview Version
mtr 版本现在已经有了 Alpha 版本,目前还是有很多需要细节完善的地方,暂时不能开放公测,如果感兴趣,欢迎来尝鲜。
我很乐意参与 Alpha 版本的测试,如果可以我想尝试下。
以下是 Alpha Preview Version
mtr 版本现在已经有了 Alpha 版本,目前还是有很多需要细节完善的地方,暂时不能开放公测,如果感兴趣,欢迎来尝鲜。
我也想测试一下,如果可以请发到我邮箱(tsosunchia#gmail.com)。 另外对于web api,我有个小建议: 增加对于域名的支持
可以考虑使用阿里的DOH(不使用GOOGLE的DOH主要考虑国内网络环境)实现来减少工作量
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://dns.alidns.com/resolve?name=ip.sb&type=28"
method := "GET"
client := &http.Client {
}
req, err := http.NewRequest(method, url, nil)
if err != nil {
fmt.Println(err)
return
}
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
结果:
{
"Status": 0,
"TC": false,
"RD": true,
"RA": true,
"AD": false,
"CD": false,
"Question": {
"name": "ip.sb.",
"type": 28
},
"Answer": [
{
"name": "ip.sb.",
"TTL": 253,
"type": 28,
"data": "2606:4700:20::681a:d1f"
},
{
"name": "ip.sb.",
"TTL": 253,
"type": 28,
"data": "2606:4700:20::681a:c1f"
},
{
"name": "ip.sb.",
"TTL": 253,
"type": 28,
"data": "2606:4700:20::ac43:4bac"
}
]
}
像 mtr 一样,可以实时观测当前的 IP 到所有的这些 hop 的平均延迟和丢包率等相关信息。