From efdbc8f08e5d9d7e0d67d98247f9b65e5315700b Mon Sep 17 00:00:00 2001 From: xiu2 <54703944+XIU2@users.noreply.github.com> Date: Fri, 4 Sep 2020 15:43:16 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=9B=B4=E6=8E=A5=E8=BE=93?= =?UTF-8?q?=E5=87=BA=E7=BB=93=E6=9E=9C=E6=8E=92=E7=89=88=EF=BC=9B=E6=88=90?= =?UTF-8?q?=E5=8A=9F=E6=AF=94=E7=8E=87=E6=94=B9=E4=B8=BA=E4=B8=A2=E5=8C=85?= =?UTF-8?q?=E7=8E=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 ++-- main.go | 4 ++-- util.go | 7 ++++--- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 3925ebb..4672c1c 100644 --- a/README.md +++ b/README.md @@ -20,8 +20,8 @@ 测速完毕后,会显示最快的 20 个 IP,完整结果则保存在当前目录下的 `result.csv` 文件中,用记事本打开,排序为**延迟由低到高**,每一列用逗号分隔,分别是: ``` -IP 地址, 测试次数, 成功次数, 成功比率, 平均延迟, 下载速度 (MB/s) -104.27.70.18, 4, 4, 1.00, 150.79, 12.89 +IP 地址, 已发送, 已接收, 丢包率, 平均延迟, 下载速度 (MB/s) +104.27.70.18, 4, 4, 0.00, 150.79, 12.89 ``` 选择一个平均延迟与下载速度都不错的 IP 放到 `Hosts` 文件中(指向域名)。 diff --git a/main.go b/main.go index 8c5d0a5..f509bea 100644 --- a/main.go +++ b/main.go @@ -154,9 +154,9 @@ func main() { printResult = len(dateString) fmt.Println("\n[信息] IP数量小于显示结果数量,显示结果数量改为IP数量。\n") } - fmt.Println("\nIP 地址 \t", "测试次数\t", "成功次数\t", "成功比率\t", "平均延迟\t", "下载速度 (MB/s)") + fmt.Printf("%-16s%-5s%-5s%-5s%-6s%-11s\n", "IP 地址", "已发送", "已接收", "丢包率", "平均延迟", "下载速度 (MB/s)") for i := 0; i < printResult; i++ { - fmt.Println(dateString[i][0], "\t", dateString[i][1], "\t\t", dateString[i][2], "\t\t", dateString[i][3], "\t\t", dateString[i][4], "\t", dateString[i][5]) + fmt.Printf("%-18s%-8s%-8s%-8s%-10s%-15s\n", dateString[i][0], dateString[i][1], dateString[i][2], dateString[i][3], dateString[i][4], dateString[i][5]) } if outputFile != "" { fmt.Printf("\n完整内容请查看 %v 文件。请按 回车键 或 Ctrl+C 退出。", outputFile) diff --git a/util.go b/util.go index 368989d..d72fa2d 100644 --- a/util.go +++ b/util.go @@ -23,7 +23,8 @@ type CloudflareIPData struct { func (cf *CloudflareIPData) getRecvRate() float32 { if cf.recvRate == 0 { - cf.recvRate = float32(cf.pingReceived) / float32(cf.pingCount) + pingLost := cf.pingCount - cf.pingReceived + cf.recvRate = float32(pingLost) / float32(cf.pingCount) } return cf.recvRate } @@ -36,7 +37,7 @@ func ExportCsv(filePath string, data []CloudflareIPData) { } defer fp.Close() w := csv.NewWriter(fp) //创建一个新的写入文件流 - w.Write([]string{"IP 地址", "测试次数", "成功次数", "成功比率", "平均延迟", "下载速度 (MB/s)"}) + w.Write([]string{"IP 地址", "已发送", "已接收", "丢包率", "平均延迟", "下载速度 (MB/s)"}) w.WriteAll(convertToString(data)) w.Flush() } @@ -112,7 +113,7 @@ func (cfs CloudflareIPDataSet) Len() int { func (cfs CloudflareIPDataSet) Less(i, j int) bool { if (cfs)[i].getRecvRate() != cfs[j].getRecvRate() { - return cfs[i].getRecvRate() > cfs[j].getRecvRate() + return cfs[i].getRecvRate() < cfs[j].getRecvRate() } return cfs[i].pingTime < cfs[j].pingTime }