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

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

net.Conn 是否存在可恢復(fù)的讀取錯(cuò)誤?

net.Conn 是否存在可恢復(fù)的讀取錯(cuò)誤?

Go
SMILET 2023-07-26 10:18:10
如果.Read()a 的方法net.Conn返回錯(cuò)誤,這是否意味著將來(lái)的讀取也會(huì)因錯(cuò)誤而失?。炕蛘哂锌苫謴?fù)的錯(cuò)誤嗎?如果是這樣,我如何知道是否/何時(shí)重試讀???
查看完整描述

2 回答

?
守著星空守著你

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

conn.Read一般來(lái)說(shuō),可重試的操作不會(huì)出現(xiàn)任何錯(cuò)誤。該界面的大多數(shù)使用io.Reader都會(huì)假設(shè)所有錯(cuò)誤都是最終的。

任何net確??芍卦嚨陌e(cuò)誤都將符合接口net.Error,并公開(kāi)一個(gè)Temporary方法。

這最常在Accept循環(huán)中使用,就像 http 包中的這個(gè)解釋示例一樣

for {

? ? rw, e := l.Accept()

? ? if e != nil {

? ? ? ? if ne, ok := e.(net.Error); ok && ne.Temporary() {

? ? ? ? ? ? if tempDelay == 0 {

? ? ? ? ? ? ? ? tempDelay = 5 * time.Millisecond

? ? ? ? ? ? } else {

? ? ? ? ? ? ? ? tempDelay *= 2

? ? ? ? ? ? }

? ? ? ? ? ? if max := 1 * time.Second; tempDelay > max {

? ? ? ? ? ? ? ? tempDelay = max

? ? ? ? ? ? }

? ? ? ? ? ? time.Sleep(tempDelay)

? ? ? ? ? ? continue

? ? ? ? }

? ? ? ? return e

? ? }

}

任何其他可能的情況都需要在了解協(xié)議和當(dāng)前情況的情況下根據(jù)個(gè)人情況進(jìn)行處理。


查看完整回答
反對(duì) 回復(fù) 2023-07-26
?
莫回?zé)o

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

超時(shí)是從net.TCPConn讀取時(shí)唯一可恢復(fù)的錯(cuò)誤,并且只有在連接上設(shè)置讀取截止時(shí)間時(shí)才會(huì)返回該錯(cuò)誤。

使用?Error.Temporary()檢查重試時(shí)可能解決的錯(cuò)誤,并使用Error.Timeout()檢查超時(shí):

?n, err := c.Read(buf)

?// process buf[:n] bytes

?if e.(net.Error); ok && e.Timeout() && e.Temporary() {

? ? // handle recoverable read deadline expiration

?} else if err != nil {

? ? // handle other errors

?}


查看完整回答
反對(duì) 回復(fù) 2023-07-26
?
慕容森

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

查看net包的具體錯(cuò)誤類(lèi)型https://golang.org/pkg/net/#OpError

它提供了一種特定的Temporary()方法來(lái)確定是否是非終止錯(cuò)誤。

要手動(dòng)找出哪個(gè)錯(cuò)誤,Temporary您必須檢查網(wǎng)絡(luò)、操作系統(tǒng)和其他一些內(nèi)部包中定義的每個(gè)錯(cuò)誤。

要以編程方式檢查臨時(shí)錯(cuò)誤,您可以聲明自己的 local ,或者可以依賴(lài) net 包https://golang.org/pkg/net/#Errortemporary interface{ Temporary() bool }提供的此接口

OpError.Temporary方法測(cè)試其內(nèi)部錯(cuò)誤是否實(shí)現(xiàn)了net.temporary接口(https://golang.org/src/net/net.go?s=16056:16090#L501Temporary() ),如果是則返回內(nèi)部錯(cuò)誤的調(diào)用結(jié)果,例如https://golang.org/src/net/net.go?s=19122:19157#L605。

我不確定您正在考慮哪種讀取重試,但是,內(nèi)部 fd.read 方法再次實(shí)現(xiàn)重試 https://golang.org/src/internal/poll/fd_unix.go#L165


查看完整回答
反對(duì) 回復(fù) 2023-07-26
  • 2 回答
  • 0 關(guān)注
  • 152 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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