首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >拨号tcp:不匹配的本地地址类型172.29.4.175

问拨号tcp:不匹配的本地地址类型172.29.4.175
EN

Stack Overflow用户
提问于 2016-11-04 19:04:40
回答 1查看 1.1K关注 0票数 2

使用以下代码获得此错误:拨号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。

代码语言:javascript
复制
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)
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-04 19:10:31

几乎100%的情况下,HTTP拨号将通过TCP连接。您只提供带有ip网络类型的IP地址,但是TCP地址需要tcp网络类型和端口号。

您可以用net.TCPAddr代替net.IPAddr,也可以从net.ResolveTCPAddr开始创建正确的类型。

代码语言:javascript
复制
addr := &net.TCPAddr{net.IP{172, 29, 4, 175}, 0, ""}

或

代码语言:javascript
复制
addr, _ := net.ResolveTCPAddr("tcp", "172.29.4.175:0")
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40430098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档