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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

從 golang 中的 tcp 連接讀取

從 golang 中的 tcp 連接讀取

Go
胡子哥哥 2021-12-07 14:45:01
在像 bytes_read, err := conn.Read(tmp) 這樣的語(yǔ)句中,我希望嘗試讀取 x 秒,如果沒(méi)有開(kāi)始讀取,我希望代碼繼續(xù)進(jìn)行,檢查一些連接并再次循環(huán)返回并嘗試讀取。我可以使用 select-case 并生成兩個(gè) goroutine,一個(gè)嘗試讀取,另一個(gè)用于超時(shí)。但是在這里,如果首先發(fā)生超時(shí),代碼將繼續(xù)執(zhí)行,檢查條件并再次生成一個(gè)例程以嘗試在先前的讀取例程仍然存在時(shí)從連接中讀取。我希望之前的例程在超時(shí)發(fā)生時(shí)終止。關(guān)于我如何繼續(xù)的任何建議?
查看完整描述

1 回答

?
慕田峪4524236

TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超5個(gè)贊

希望這可以幫助你。^_^


for {

    // set SetReadDeadline

    err := conn.SetReadDeadline(time.Now().Add(5 * time.Second))

    if err != nil {

        log.Println("SetReadDeadline failed:", err)

        // do something else, for example create new conn

        return

    }


    recvBuf := make([]byte, 1024)


    n, err = conn.Read(recvBuf[:]) // recv data

    if err != nil {

        if netErr, ok := err.(net.Error); ok && netErr.Timeout() {

            log.Println("read timeout:", err)

            // time out

        } else {

            log.Println("read error:", err)

            // some error else, do something else, for example create new conn

        }

    }

}


查看完整回答
反對(duì) 回復(fù) 2021-12-07
  • 1 回答
  • 0 關(guān)注
  • 229 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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