Golang HTTP.Client 访问 Unix 套接字指南
在 Go 语言中,可以使用 net.DialUnix 函数来连接 Unix 套接字,并创建一个 net.Conn 对象。然后,可以使用该对象来创建一个自定义的 http.Transport,并将其传递给 http.Client 的构造函数。
下面是一个示例代码:
package main
import (
"net"
"net/http"
)
func main() {
// 连接 Unix 套接字
unixAddr := &net.UnixAddr{Name: "/var/run/docker.sock", Net: "unix"}
conn, err := net.DialUnix("unix", nil, unixAddr)
if err != nil {
panic(err)
}
// 创建自定义的 http.Transport
transport := &http.Transport{
Dial: func(network, addr string) (net.Conn, error) {
return conn, nil
},
}
// 创建 http.Client
client := &http.Client{
Transport: transport,
}
// 使用 http.Client 访问 Unix 套接字
resp, err := client.Get("http://localhost/version")
if err != nil {
panic(err)
}
defer resp.Body.Close()
// 处理响应
// ...
}
在上面的示例中,我们首先使用 net.DialUnix 函数连接 Unix 套接字。然后,我们创建一个自定义的 http.Transport,并将其 Dial 函数设置为返回我们刚刚创建的 net.Conn 对象。最后,我们使用 http.Client 访问 Unix 套接字,并处理响应。
原文地址: https://www.cveoy.top/t/topic/kRyG 著作权归作者所有。请勿转载和采集!