使用以下代码获得此错误:拨号tcp:不匹配的本地地址类型172.29.4.175
知道怎么解决这个问题吗?除了http://oocms.org/question/763660/dial-with-a-specific-address-interface-golang之外,在网上找不到任何有用的东西,但这是行不通的。
IP 172.29.4.175目前是我的Macbook wifi接口的IP。
package main
import (
"fmt"
"net"
"net/http"
)
var url = "https://httpbin.org/get"
func main() {
q := net.ParseIP("172.29.4.175")
addr := &net.IPAddr{q, ""}
var transport = &http.Transport{
DialContext: (&net.Dialer{
LocalAddr: addr,
}).DialContext,
}
var httpclient = &http.Client{
Transport: transport,
}
req, err := http.NewRequest("GET", url, nil)
if err != nil {
fmt.Println(err)
}
req.Header.Set("User-Agent", "Test-Agent")
resp, err := httpclient.Do(req)
fmt.Println(resp, err)
}发布于 2016-11-04 19:10:31
几乎100%的情况下,HTTP拨号将通过TCP连接。您只提供带有ip网络类型的IP地址,但是TCP地址需要tcp网络类型和端口号。
您可以用net.TCPAddr代替net.IPAddr,也可以从net.ResolveTCPAddr开始创建正确的类型。
addr := &net.TCPAddr{net.IP{172, 29, 4, 175}, 0, ""}或
addr, _ := net.ResolveTCPAddr("tcp", "172.29.4.175:0")https://stackoverflow.com/questions/40430098
复制相似问题