I wrote a URL monitoring program in Go, but after a while I found many ESTABLISHED entries in netstat -nao|grep 80 .
GetHttpStatusCode function:
HttpClient = &http.Client{ Transport: &http.Transport{ Dial: func(netw, addr string) (net.Conn, error) { deadline := time.Now().Add(30 * time.Second) c, err := net.DialTimeout(netw, addr, 20*time.Second) if err != nil { return nil, err } c.SetDeadline(deadline) c.SetReadDeadline(deadline) c.SetWriteDeadline(deadline) return c, nil }, }, } // ... func getHttpStatusCode(url string) int { if url == "" { return 200 } req, err := http.NewRequest("GET", url, nil) if err != nil { return 0 } req.Close = true req.Header.Add("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17") resp, err := HttpClient.Do(req) if err != nil { return 0 } defer resp.Body.Close() return resp.StatusCode }
I checked the Go manual and did not find something like req.Close () and just put off resp.Body.Close ().
Here is the result of netstat -nao | grep 80 netstat -nao | grep 80 :
tcp 1343352 0 192.168.2.33:29581 220.181.155.19:80 ESTABLISHED off (0,00 / 0/0)
And the output of tcpdump tcp port 80 :
14:32:54.085095 IP 113.12.80.13.http > wk_0_mysql.KIDC90805.zw.39174: Flags [.], seq 17376:18824, ack 1, win 42, options [nop,nop,TS val 4236145017 ecr 204896351], length 1448 14:32:54.109206 IP wk_0_mysql.KIDC90805.zw.25834 > 220.181.90.8.http: Flags [S], seq 714805337, win 14600, options [mss 1460,sackOK,TS val 204896416 ecr 0,nop,wscale 9], length 0 14:32:54.223349 IP 220.181.155.22.http > wk_0_mysql.KIDC90805.zw.19262: Flags [.], seq 864939135:864940583, ack 1630899997, win 42, options [nop,nop,TS val 1570834172 ecr 204896529], length 1448 14:32:54.223352 IP wk_0_mysql.KIDC90805.zw.19262 > 220.181.155.22.http: Flags [.], ack 1448, win 1301, options [nop,nop,TS val 204896530 ecr 1570834172], length 0 14:32:54.223432 IP 220.181.155.10.http > wk_0_mysql.KIDC90805.zw.27376: Flags [.], seq 3889371684:3889373132, ack 1106685068, win 42, options [nop,nop,TS val 3866364254 ecr 204896529], length 1448 14:32:54.223436 IP wk_0_mysql.KIDC90805.zw.27376 > 220.181.155.10.http: Flags [.], ack 1448, win 594, options [nop,nop,TS val 204896530 ecr 3866364254], length 0 14:32:54.275774 IP 121.12.101.130.http > wk_0_mysql.KIDC90805.zw.63329: Flags [.], seq 1314475629:1314477089, ack 642951590, win 54, length 1460