[英]Go to test website status (ping)
有沒有其他更好的方法來 ping 網站並檢查網站是否可用?
我只需要獲取狀態代碼而不是獲取(下載)所有網站...
func Ping(domain string) int {
timeout := time.Duration(2 * time.Second)
dialTimeout := func(network, addr string) (net.Conn, error) {
return net.DialTimeout(network, addr, timeout)
}
transport := http.Transport{
Dial: dialTimeout,
}
client := http.Client{
Transport: &transport,
}
url := "http://" + domain
req, _ := http.NewRequest("GET", url, nil)
resp, _ := client.Do(req)
return resp.StatusCode
}
這個函數太慢了,當我用 goroutines 運行時,它超出了限制並給了我錯誤......
謝謝!
碼:
var client = http.Client{
Transport: &http.Transport{
Dial: net.Dialer{Timeout: 2 * time.Second}.Dial,
},
}
func Ping(domain string) (int, error) {
url := "http://" + domain
req, err := http.NewRequest("HEAD", url, nil)
if err != nil {
return 0, err
}
resp, err := client.Do(req)
if err != nil {
return 0, err
}
resp.Body.Close()
return resp.StatusCode, nil
}
由於這是谷歌在 Go 中 Pinging 的最高結果,只知道有幾個包是為此目的編寫的,但是如果你打算使用這個答案,我必須做一些改變才能讓它工作。
import (
"time"
"net/http"
)
var client = http.Client{
Timeout: 2 * time.Second,
}
但在其他方面與接受的答案保持一致。
但我是 Go 的初學者,所以可能有更好的方法來做到這一點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.