1. 程式人生 > >[go]go版的ping測試程式(1)

[go]go版的ping測試程式(1)

在<Go語言程式設計>中有icmp ping的例子,不過實際測試不通過....這個有空研究一下原始碼再看.

 注: 原文程式碼需要修改

_, err = conn.Read(msg[0:])

改為_, err = conn.Read(msg[20:])

在網找到了一個可用的模組,還可以支援ipv6(摘自go自帶原始碼 src/pkg/net/ipraw_test.go)

簡單測試了一下.可用

package main
import (
"ping"
"fmt"
"time"
"os"
)

func main() {
	//1.輸入引數處理.這裡使用os而非flag
	var host string
	if len(os.Args) != 2 {
	  host="127.0.0.1"
	}else{
	  host = os.Args[1]   //目標域名
  }
  
 t1:=time.Now().UnixNano()
 
 alive,err:=ping.Ping(host,3)
 fmt.Println("result ",alive,err)
 t2:=time.Now().UnixNano()
 fmt.Println(t2-t1);
 
}