dongpu6141 2016-11-04 19:04
浏览 29
已采纳

拨打tcp:本地地址类型不匹配172.29.4.175

I'm getting this error with the following code: dial tcp: mismatched local address type 172.29.4.175

Any idea on how to fix this? Couldn't find anything useful online other than http://oocms.org/question/763660/dial-with-a-specific-address-interface-golang but that didn't work.

The IP 172.29.4.175 is currently the IP of my Macbooks wifi interface.

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)
}
  • 写回答

1条回答 默认 最新

  • dongqufi82315 2016-11-04 19:10
    关注

    Nearly 100% of the time, an HTTP Dial is going to be connecting via TCP. You're only providing an IP address with the ip network type, yet a TCP address required the tcp network type and a port number.

    You can either substitute net.TCPAddr for net.IPAddr, or start with net.ResolveTCPAddr to create the correct type.

    addr := &net.TCPAddr{net.IP{172, 29, 4, 175}, 0, ""}
    

    or

    addr, _ := net.ResolveTCPAddr("tcp", "172.29.4.175:0")
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥30 Unity接入微信SDK 无法开启摄像头
  • ¥20 有偿 写代码 要用特定的软件anaconda 里的jvpyter 用python3写
  • ¥20 cad图纸,chx-3六轴码垛机器人
  • ¥15 移动摄像头专网需要解vlan
  • ¥20 access多表提取相同字段数据并合并
  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算
  • ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
  • ¥20 有人知道这种图怎么画吗?
  • ¥15 pyqt6如何引用qrc文件加载里面的的资源