为了账号安全,请及时绑定邮箱和手机立即绑定

使用 ResponseWriter.Write 时,在 Go 中的 250 个连接后出现

使用 ResponseWriter.Write 时,在 Go 中的 250 个连接后出现

Go
慕斯709654 2021-08-23 15:26:25
我有以下 http 客户端/服务器代码:服务器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 个连接之后,我从 client.Do 收到以下错误:error:  Get http://localhost:5008/250: dial tcp: lookup localhost: no such host并且没有更多的连接会成功。但是,如果我从w.Write([]byte("OK"))==>更改服务器中的行,w.WriteHeader(200)则连接数量没有限制,并且可以按预期工作。我在这里缺少什么?
查看完整描述

3 回答

  • 3 回答
  • 0 关注
  • 218 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信