The program below works for me (only dials once). Almost always,
failure to reuse a connection turns out to be forgetting to call
r.Body.Close.
package main
import (
"fmt"
"log"
"net"
"net/http"
)
func dial(netw, addr string) (net.Conn, error) {
fmt.Printf("dial %s %s\n", netw, addr)
return net.Dial(netw, addr)
}
func main() {
http.DefaultTransport.(*http.Transport).Dial = dial
for i := 0; i < 10; i++ {
r, err := http.Get("
http://www.google.com/robots.txt")
if err != nil {
log.Fatal(err)
}
r.Body.Close()
}
}