我试图像这样设置http请求的本地地址:
localAddr, err := net.ResolveIPAddr("ip6", laddr)
if err != nil {
log.Fatal(err)
}
localTCPAddr := net.TCPAddr{
IP: localAddr.IP,
}
client := &http.Client{
Transport: &http.Transport{
Proxy: http.ProxyFromEnvironment,
DialContext: (&net.Dialer{
LocalAddr: &localTCPAddr,
Timeout: 30 * time.Second,
KeepAlive: 30 * time.Second,
DualStack: true,
}).DialContext,
MaxIdleConns: 100,
IdleConnTimeout: 90 * time.Second,
TLSHandshakeTimeout: 10 * time.Second,
ExpectContinueTimeout: 1 * time.Second,
},
}
供参考:laddr变量如下所示:
2620:13a:c020:0016:1f7b:169c:846f:218a:49152
尝试发送请求时发生错误,这是错误: 2018/11/25 00:17:58查找2620:13a:c020:0016:1f7b:169c:846f:218a:49152:没有这样的主机。
我不确定是什么导致此错误。有关我的环境的一些细节:它是Ubuntu全新的VPS,几乎没有安装。
编辑: 即使按照下面指出的那样删除端口,我仍然会收到此错误: 拨打tcp [2620:13a:c020:16:1f7b:169c:846f:218a]:0-> [remoteip]:[remoteport]绑定:无法分配请求的地址
答案 0 :(得分:3)
此2620:13a:c020:0016:1f7b:169c:846f:218a:49152
不是有效的IPv6地址。您有一个额外的49152
,它甚至不是有效的IPv6附件。 2620:13a:c020:0016:1f7b:169c:846f:218a
是有效的IPv6地址。
修改
地址解析与建立连接不同。如果要建立连接而不是解析地址,那就是需要端口的时间。
例如
net.Dial("tcp", "[2620:13a:c020:16:1f7b:169c:846f:218a]:49152")
答案 1 :(得分:0)
错误就在我的头上:我之前没有将地址分配给接口。感谢您通知我有关端口以及所有其他方面的信息,