亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如果客戶端在 10 秒內未響應,如何通過超時關閉連接?

如果客戶端在 10 秒內未響應,如何通過超時關閉連接?

Go
慕標琳琳 2022-08-01 09:54:24
我有代碼(我使用 https://github.com/fiorix/go-smpp):// -----------------------------------------------// handleConnection new clients.// -----------------------------------------------func (_srv *ServerSmpp) handleConnection(_cfg *ConfigSmpp, c *conn) {    defer c.Close()    if err := _srv.auth(_cfg, c); err != nil {        if err != io.EOF {            log.Printf("smpp_server: server auth failed: %s\n", err)        }        return    }    notify := make(chan error)    go func() {        for {            pb, err := c.Read()            if err != nil {                notify <- err                return            }            err = _srv.Handler(_srv.RemoteProvider, c, pb)            if err != nil {                fmt.Printf("%s\n", err)                notify <- err                return            }        }    }()    for {        select {        case err:= <-notify:            if io.EOF == err {                fmt.Printf("Smpp server (read): %s\n", err)                return            }      case <-time.After(time.Second * 10):            fmt.Printf("Client disconnected by timeout.\n")            return        }    }}調用的句柄連接的代碼:func (_srv *ServerSmpp) Serve(_cfg *ConfigSmpp) {    for {        client, err := _srv.NetListener.Accept()        if err != nil {            break         }        c := newConn(client)        go _srv.handleConnection(_cfg, c)    }}當此代碼工作時,服務器會在超時 10 秒之前斷開所有客戶端的連接,但是當客戶端不起作用 10 秒時,我該如何斷開連接呢?
查看完整描述

1 回答

?
長風秋雁

TA貢獻1757條經驗 獲得超7個贊

您的對象似乎是一個 ,在

阻止之前,選擇一種使用適當值進行調用的方式:clientnet.Connclient.SetReadDeadline()time.Timeclient.Read()


c.client.SetDeadline( time.Now().Add(10 * time.Second )

pb, err := c.Read() { ...


查看完整回答
反對 回復 2022-08-01
  • 1 回答
  • 0 關注
  • 132 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號