gpt4 book ai didi

go - 在具有特定本地地址的 GoLang 中使用 Dial

转载 作者:IT王子 更新时间:2023-10-29 01:38:10 25 4
gpt4 key购买 nike

我需要能够选择应该从哪个 IP 地址发送我的 HTTP 请求。现在在我的代码中,对于 DNS 缓存,我根据 this 使用以下内容:

defaultTransport.DialContext = func(ctx context.Context, network string, addr string) (conn net.Conn, err error) {
separator := strings.LastIndex(addr, ":")
ips, err := r.LookupHost(ctx, addr[:separator])
if err != nil {
return nil, err
}
for _, ip := range ips {
conn, err = net.Dial(network, ip+addr[separator:])
if err == nil {
break
}
}
return
}

为了指定本地地址,我找到的唯一方法是使用以下内容:

defaultTransport.DialContext = (&net.Dialer{
LocalAddr: localAddr,
}).DialContext

我怎样才能实现以上的结合?

最佳答案

您可以使用 Golang 的网络包创建自己的拨号器,它将使用您的特定本地地址,如下所示:

dialer = &net.Dialer{
LocalAddr: &net.TCPAddr{
IP: net.ParseIP("127.0.0.1"),
Port: 0,
},
}
conn, err := dialer.Dial("tcp", "127.0.0.1:2525")

您还可以指定您的特定端口。但是使用端口 0 意味着它将使用任何动态端口值来连接到另一台服务器。

关于go - 在具有特定本地地址的 GoLang 中使用 Dial,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50870994/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com