代码
package main
import (
"crypto/tls"
"io/ioutil"
"log"
"net/http"
"os"
"path"
"strings"
"time"
)
func panicIfNotNil(e error) {
if e != nil {
panic(e)
}
}
func loop() {
ex, err := os.Executable()
panicIfNotNil(err)
ex = path.Dir(ex)
for {
now := time.Now()
tr := &http.Transport{
TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
DisableKeepAlives: true, // 可以关闭链接
}
req, err := http.NewRequest("GET", "https://httpbin.org/ip", nil)
panicIfNotNil(err)
client := &http.Client{
Timeout: time.Second * 8,
Transport: tr,
}
resp, err := client.Do(req)
if resp != nil {
bodyByteArr, err := ioutil.ReadAll(resp.Body)
panicIfNotNil(err)
log.Printf("status_code:%d, body:%s, cost:%v", resp.StatusCode, string(bodyByteArr), time.Since(now))
defer resp.Body.Close()
}
if err != nil && strings.Index(err.Error(), "Client.Timeout exceeded while awaiting headers") > -1 {
continue
}
panicIfNotNil(err)
time.Sleep(time.Second * 3)
}
}
func main() {
loop()
}
一开始只有 4-m 的样子,过了两分钟就到 10M 左右了,这是为什么呀,我可能确保链接时关闭了的 求大佬指点下
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.