來自TCP 套接字的HTTP 伺服器(在Go 中)參數無效的問題
您正在嘗試使用TCP 套接字建立HTTP 伺服器去。您已成功將套接字綁定到VRF 接口,但啟動HTTP 伺服器時遇到錯誤:「accept tcp 127.0.0.1:80:accept: invalid argument.」
解決辦法
此錯誤表示套接字可能有缺陷或建立不正確。要解決此問題,您可以在綁定套接字之前使用 net.ListenConfig 指定套接字選項。這可以確保套接字設定正確,正如 net 套件所期望的那樣。
ListenConfig.Control 函數允許您呼叫Controlsyscall.RawConn 閉包上的🎜> 方法,它使您可以存取套接字設定中使用的文件描述符。下面是一個範例:
<code class="go">package main import ( "context" "log" "net" "syscall" ) func main() { lc := net.ListenConfig{Control: controlOnConnSetup} ln, err := lc.Listen(context.Background(), "tcp", "127.0.0.1:80") if err != nil { log.Fatal(err) } ln.Close() } func controlOnConnSetup(network string, address string, c syscall.RawConn) error { var operr error fn := func(fd uintptr) { operr = syscall.SetsockoptString(int(fd), syscall.SOL_SOCKET, syscall.SO_BINDTODEVICE, "vrfiface") } if err := c.Control(fn); err != nil { return err } if operr != nil { return operr } return nil }</code>
controlOnConnSetup 函數在綁定套接字之前將SO_BINDTODEVICE 套接字選項設定為「vrfiface 」。這可確保套接字綁定到指定的 VRF 介面。
進行此變更後,您應該能夠成功啟動 HTTP 伺服器,而不會遇到「無效參數」錯誤。以上是在 Go 中從 TCP 套接字建立 HTTP 伺服器時如何解決「無效參數」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!