Iperf 安装
https://www.cnblogs.com/shuqingstudy/p/10767414.html
把包上传至环境虚拟机
然后执行以下命令
./configure
make
sudo make install
sudo ldconfig
go代码
客户端代码
package main
import (
"fmt"
"os/exec"
"strings"
)
func main() {
// 启动客户端 IP 地址
cmd := exec.Command("iperf3", "-c", "10.19.200.151", "-t", "10", "-b", "100M", "-l", "16384")
stdout, err := cmd.Output()
if err != nil {
fmt.Println("Error running iperf test:", err)
return
}
cmd2 := exec.Command("lshw", "-C", "network")
stdout2, err := cmd2.Output()
if err != nil {
fmt.Println("Error running iperf test:", err)
return
}
// 从输出中解析性能结果
result := string(stdout)
lines := strings.Split(result, "\n")
// var actualSpeed, claimedSpeed string
claim := string(stdout2)
claimlines := strings.Split(claim, "\n")
for _, line := range lines {
if strings.Contains(line, "sender") {
fields := strings.Fields(line)
// print(fields)
// print("发送者\n")
print("发送者重传包的个数",fields[8],"\n")
print("发送者实际速率",fields[6],fields[7],"\n")
// for i := range fields {
// print("fields",i,"是",fields[i])
// print("\n")
// }
// actualSpeed = fields[7]
}
if strings.Contains(line, "receiver") {
fields := strings.Fields(line)
// print(fields)
// print("接收者")
// print("接收者没有重传包的个数")
print("接收者实际速率",fields[6],fields[7],"\n")
// for i := range fields {
// print("fields",i,"是",fields[i])
// print("\n")
// }
// actualSpeed1 = fields[7]
}
}
for _, line := range claimlines {
if strings.Contains(line, "size:") {
fields := strings.Fields(line)
print("网卡size是",fields[1],"\n")
//
// actualSpeed = fields[7]
}
if strings.Contains(line, "capacity") {
fields := strings.Fields(line)
print("网卡capacity是",fields[1],"\n")
// actualSpeed1 = fields[7]
}
if strings.Contains(line, "product") {
fields := strings.Fields(line)
print("网卡product是",fields[1],"\n")
// actualSpeed1 = fields[7]
}
}
// for _, line := range lines {
// fmt.Println(line)
// // if strings.Contains(line, "receiver") {
// // fmt.Println(string(stdout2))
// // fmt.Println("性能测试结果:", line)
// // break
// // }
// }
// output := fmt.Sprintf("网卡实际速率: %s Mbits/sec, 网卡标称速率: %s Mbits/sec", actualSpeed, claimedSpeed)
// fmt.Println(output)
}
服务端代码
package main
import (
"fmt"
"os/exec"
// "strings"
)
func main() {
// 执行 iperf 测试命令
cmd := exec.Command("iperf3", "-s") // 启动服务器 IP 地址
stdout, err := cmd.Output()
fmt.Println("性能测试结果:", string(stdout))
if err != nil {
fmt.Println("Error running iperf test:", err)
return
}
// else {fmt.Print("server boot success")}
// 从输出中解析性能结果
// result := string(stdout)
// lines := strings.Split(result, "\n")
// for _, line := range lines {
// if strings.Contains(line, "receiver") {
// fmt.Println("性能测试结果:", line)
// break
// }
// }
}