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

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

是什么導(dǎo)致 Go 服務(wù)器中的“對等連接重置”錯誤?

是什么導(dǎo)致 Go 服務(wù)器中的“對等連接重置”錯誤?

Go
幕布斯7119047 2022-10-31 16:52:41
我在 Go 中編寫了一個基本的 Web 服務(wù)器,但它似乎無法正確處理任何請求,而我得到的只是“接收失?。簩Φ确街刂眠B接”。我很高興服務(wù)器確實可以正確啟動和停止,并且我可以看到它正在偵聽我配置的端口 8080。我還排除了解析 YAML 配置文件的問題——它肯定會被解析到 http.Server{}。我真的不知道還有什么要檢查的,并且努力尋找任何指向正確方向的東西。我也會提前道歉,因為我知道我在下面粘貼了大量代碼,但我真的不知道錯誤來自什么以及來自哪里。鑒于服務(wù)器正在運行,當(dāng)我點擊“/”端點/路由時,我希望得到“Hello from Go!” 回來了。目錄結(jié)構(gòu)? tree . | grep -iE 'cmd|server.go|go.mod|go.sum|server.yaml'├── cmd│   └── server.go├── go.mod├── go.sum└── server.yaml服務(wù)器.gopackage mainimport (    "context"    "errors"    "fmt"    "log"    "net/http"    "os"    "os/signal"    "syscall"    "time"    "gopkg.in/yaml.v3")type Config struct {    Port            string `yaml:"Port"`    ReadTimeout     int    `yaml:"ReadTimeout"`    WriteTimeout    int    `yaml:"WriteTimeout"`    IdleTimeout     int    `yaml:"IdleTimeout"`    ShutdownTimeout int    `yaml:"ShutdownTimeout"`    ErrorLog        string `yaml:"ErrorLog"`}func main() {    if len(os.Args) != 2 {        log.Fatal("Missing arguments")    }    configFile, err := os.Open(os.Args[1])    if err != nil {        log.Fatal(err)    }    defer configFile.Close()    // TODO: Implement a custom ServeMux + routes    serverConfig := Config{}    yamlDecoder := yaml.NewDecoder(configFile)    err = yamlDecoder.Decode(&serverConfig)    if err != nil {        log.Fatal(err)    }    errorLogFile, err := os.OpenFile(serverConfig.ErrorLog, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)    if err != nil {        log.Fatal(err)    }    defer errorLogFile.Close()    errorLog := log.New(errorLogFile, "ERROR : ", log.LstdFlags|log.Lshortfile)    server := &http.Server{        Addr:         fmt.Sprintf(":%s", serverConfig.Port),        ReadTimeout:  time.Duration(serverConfig.ReadTimeout),        WriteTimeout: time.Duration(serverConfig.WriteTimeout),        IdleTimeout:  time.Duration(serverConfig.IdleTimeout),        ErrorLog:     errorLog,    }    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {        fmt.Fprintln(w, "Hello from Go!")    })
查看完整描述

1 回答

?
一只斗牛犬

TA貢獻(xiàn)1784條經(jīng)驗 獲得超2個贊

正如評論中提到的,這個問題與超時值太短有關(guān)——每個 5 納秒。這是因為 time.Duration 表示為兩個瞬間之間經(jīng)過的時間,以 int64 納秒計數(shù)。所以我需要將其轉(zhuǎn)換為幾秒鐘,以獲得我所期望的。

從文檔:

“持續(xù)時間將兩個瞬間之間的經(jīng)過時間表示為 int64納秒計數(shù)。該表示將最大可表示持續(xù)時間限制為大約 290 年。”

參考

解決方案:

server := &http.Server{

    Addr:         fmt.Sprintf(":%s", serverConfig.Port),

    ReadTimeout:  time.Duration(serverConfig.ReadTimeout) * time.Second,

    WriteTimeout: time.Duration(serverConfig.WriteTimeout) * time.Second,

    IdleTimeout:  time.Duration(serverConfig.IdleTimeout) * time.Second,

    ErrorLog:     errorLog,

}


查看完整回答
反對 回復(fù) 2022-10-31
  • 1 回答
  • 0 關(guān)注
  • 102 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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