Iperf使用go语言调用

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
	// 	}
	// }
}
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值