国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

8小時(shí)轉(zhuǎn)職Golang工程師(如果你想低成本學(xué)習(xí)Go語言)

2022-10-12 10:05 作者:隨風(fēng)的葉子  | 我要投稿

超時(shí)踢出功能:我直接使用net.Conn的方法,超過時(shí)間就不等待了,這樣我就可以退出當(dāng)前協(xié)程和關(guān)閉連接了。

func (s *Server) handler(user *User) {
   //監(jiān)聽信息的接收
   go func() {
      buf := make([]byte, 1024*4) //大小4KB
      for {
         user.Conn.SetReadDeadline(time.Now().Add(10 * time.Second))
         n, err := user.Conn.Read(buf)
         //nc被退出時(shí)觸發(fā),下線
         if n == 0 {
            user.Offline() //下線
            return
         }
         //異常處理(ctrl+c退出不屬于io.EOF,所以丟在下面吧)
         if err != nil && err != io.EOF {
            user.Offline() //出現(xiàn)異常,下線
            log.Printf("Conn.Read err: %v\n", err)
            return
         }
         //消息處理
         user.DealWithMessage(string(buf[:n-1]))
      }
   }()
}


------用戶下線代碼

// Offline 用戶下線
func (u *User) Offline() {
   s := u.server
   s.broadcast(u.Name+",下線!", u)
   s.lock.Lock()
   delete(s.onlineUsers, u.Name)
   s.lock.Unlock()
   u.Conn.Close() //關(guān)閉連接
}


8小時(shí)轉(zhuǎn)職Golang工程師(如果你想低成本學(xué)習(xí)Go語言)的評論 (共 條)

分享到微博請遵守國家法律
阿拉善盟| 德清县| 恩平市| 合川市| 曲水县| 阆中市| 株洲县| 寿光市| 靖江市| 全南县| 宝应县| 重庆市| 龙门县| 梅河口市| 修武县| 绥中县| 平泉县| 咸丰县| 昌都县| 肥城市| 乌海市| 西乡县| 延庆县| 衡南县| 新丰县| 扎鲁特旗| 聂荣县| 松溪县| 临猗县| 万源市| 尖扎县| 连城县| 高雄市| 利辛县| 玛沁县| 策勒县| 铁力市| 土默特右旗| 阳朔县| 昌平区| 如皋市|