瀏覽代碼

优化直接输出结果排版;成功比率改为丢包率

xiu2 5 年之前
父節點
當前提交
efdbc8f08e
共有 3 個文件被更改,包括 8 次插入7 次删除
  1. 2 2
      README.md
  2. 2 2
      main.go
  3. 4 3
      util.go

+ 2 - 2
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` 文件中(指向域名)。  
 

+ 2 - 2
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)

+ 4 - 3
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
 }