-
Notifications
You must be signed in to change notification settings - Fork 3.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
http模式下,检测到可用ip超过10就跳过后续未完成的检测延迟,直接进入下载测速阶段节省时间 #389
Comments
这个的话,我不确定是否为大众需求(就是不少人会需要的功能)。 一般什么情况下会产生该需求?请举几个例子。 如果没什么人会用到的话,我可能会懒得去添加。。。对该功能感兴趣的其他人也可以在下面回复或给本条回复点表情,我看看有没有其他人需要该功能的。 |
正好有空,就顺便研究下,不过试了下发现似乎不好完美实现。 因为理想情况下应该为:延迟测速可用 IP 数量等于 10 时,立即终止所有延迟测速线程,停止创建新线程,再继续后续步骤。 这是我编译出来的测试版(因为是测试,所以代码写死了 10 个):CloudflareST_beta.zip 使用时,看似延迟测速结果只有 10 个,但实际上还是测速了 200 个(取决于 -n 延迟测速线程参数,默认为 200),只不过当可用 IP 数量大于等于 10 个时,后续的 IP 延迟测速结果都被丢弃了。
这种实现方法比较简单,只需要添加两处判断即可,代码修改如下: // tcping.go
func (p *Ping) Run() utils.PingDelaySet {
if len(p.ips) == 0 {
return p.csv
}
if Httping {
fmt.Printf("开始延迟测速(模式:HTTP,端口:%d,平均延迟上限:%v ms,平均延迟下限:%v ms)\n", TCPPort, utils.InputMaxDelay.Milliseconds(), utils.InputMinDelay.Milliseconds())
} else {
fmt.Printf("开始延迟测速(模式:TCP,端口:%d,平均延迟上限:%v ms,平均延迟下限:%v ms)\n", TCPPort, utils.InputMaxDelay.Milliseconds(), utils.InputMinDelay.Milliseconds())
}
for _, ip := range p.ips {
// 这里加了个可用 IP 数量判断,大于等于 10 个就退出循环,不再创建新延迟测速线程(因为只是测试,所以是写死的 10 个)
if len(p.csv) >= 10 {
break
}
p.wg.Add(1)
p.control <- false
go p.start(ip)
}
p.wg.Wait()
p.bar.Done()
sort.Sort(p.csv)
return p.csv
}
// ...
// ...
// ...
func (p *Ping) tcpingHandler(ip *net.IPAddr) {
recv, totalDlay := p.checkConnection(ip)
nowAble := len(p.csv)
if recv != 0 {
nowAble++
}
// 这里加了个判断,用于延迟测速后判断可用 IP 数量大于 10 就退出,不再新增可用 IP 数量、不再处理后续的延迟测速结果
if nowAble > 10 {
return
}
p.bar.Grow(1, strconv.Itoa(nowAble))
if recv == 0 {
return
}
data := &utils.PingData{
IP: ip,
Sended: PingTimes,
Received: recv,
Delay: totalDlay / time.Duration(recv),
}
p.appendIPData(data)
} |
对的,因为HTTP模式一般是配合机场代码使用,测速相同的地区,基本大差不差
哇,真速度~晚上电脑后试一下 |
测试好用!我觉得现在这样已经可以满足需求,基本3秒就能从4w个ip中赛选出来10个直接开始下载测试,至少现在不会测出五千个可用ip的情况了 |
那就行,考虑到不清楚是否有其他人需要该功能,所以正式版暂不会添加该功能,你先暂时用着这个测试版吧。 |
Can an android version be made? Its very useful if someone is only using ips from some specific region. Say for example you need a Europe IP because your server is in Europe so just quickly find a working IP from that region instead of testing everything |
功能需求
http模式下,检测到可用ip超过10就跳过后续未完成的检测延迟,直接进入下载测速阶段节省时间
预期目标
The text was updated successfully, but these errors were encountered: