第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

有人可以告訴我 golang 中 io.ReadFull 和 bytes.

有人可以告訴我 golang 中 io.ReadFull 和 bytes.

Go
慕森王 2021-07-15 14:09:52
我在實現(xiàn)一個tcp c/s demo的時候遇到了一個問題,我發(fā)現(xiàn)在服務(wù)器端使用io.ReadFull(conn, aByteArr)或者bytes.Buffer.ReadFrom(conn)的時候很奇怪,好像服務(wù)器不會t 讀取連接中的數(shù)據(jù),直到客戶端退出,換句話說,服務(wù)器卡住了,但我可以使用基本的 conn.Read(aBuffer) 讀取數(shù)據(jù)。為什么這兩種方法這么奇怪?因為我想讓我的服務(wù)器處理任意大小的數(shù)據(jù),所以我不喜歡使用基本的方式,我的意思是 conn.Read(),它必須先制作一個指定大小的字節(jié)切片。請幫我。我可以給我的代碼:客戶端:package mainimport (    "net"    "fmt"    "bufio"    "time"    "runtime")func send(s string, ch chan string){    conn, err := net.Dial("tcp", ":4000")    if err != nil {        fmt.Println(err)    }       fmt.Fprintf(conn, s)    fmt.Println("send: ", s)                                                                                                                                                                                          /*      s := "server run"    conn.Write([]byte(s))    */    status, err := bufio.NewReader(conn).ReadString('\n')    if err != nil {        fmt.Println("error: ", err)    }       ch <- status }func main(){    runtime.GOMAXPROCS(runtime.NumCPU())    fmt.Println("cpu: ", runtime.NumCPU())    ch := make(chan string, 5)    timeout := time.After(10 * time.Second)    i := 0    for{        go send(fmt.Sprintf("%s%d", "client", i), ch)         i++         select {            case ret := <-ch:                fmt.Println(ret)            case <-timeout:                fmt.Println("time out")                return        }       }   }
查看完整描述

1 回答

  • 1 回答
  • 0 關(guān)注
  • 662 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號