當轉到250個連接,我有以下的HTTP客戶端/服務器代碼:「本地主機:沒有這樣的主機」 後使用ResponseWriter.Write
服務器
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
fmt.Println("Req: ", r.URL)
w.Write([]byte("OK")) // <== PROBLEMATIC LINE
// w.WriteHeader(200) // Works as expected
})
log.Fatal(http.ListenAndServe(":5008", nil))
}
客戶
func main() {
client := &http.Client{}
for i := 0; i < 500; i++ {
url := fmt.Sprintf("http://localhost:5008/%02d", i)
req, _ := http.NewRequest("GET", url, nil)
_, err := client.Do(req)
if err != nil {
fmt.Println("error: ", err)
} else {
fmt.Println("success: ", i)
}
time.Sleep(10 * time.Millisecond)
}
}
當我運行上面的客戶端對服務器,然後250連接後,我得到以下錯誤fr om client.Do:
error: Get http://localhost:5008/250: dial tcp: lookup localhost: no such host
並且沒有更多的連接會成功。
如果我從w.Write([]byte("OK"))
==>w.WriteHeader(200)
更改服務器的線路,但是連接數量沒有限制,並且按預期工作。
我在這裏錯過了什麼?
圍棋什麼版本的? – OneOfOne 2014-10-07 03:39:26
這是您本地Go設置的問題,我無法使用Go版本1.3.3和devel + d4904f349bc8來重現。 – OneOfOne 2014-10-07 03:43:22
使用版本1.3.3 – 2014-10-07 03:44:42