小编fan*_*nxu的帖子

golang 强制 net/http 客户端使用 IPv4/IPv6

我使用 go1.11 net/http 并且想判断域是否仅支持 ipv6。

你做了什么?

我创建了自己的 DialContext,因为我想检测域是否仅支持 ipv6。下面的代码

package main
import (
    "errors"
    "fmt"
    "net"
    "net/http"
    "syscall"
    "time"
)
func ModifiedTransport() {
    var MyTransport = &http.Transport{
        DialContext: (&net.Dialer{
            Timeout:   30 * time.Second,
            KeepAlive: 30 * time.Second,
            DualStack: false,
            Control: func(network, address string, c syscall.RawConn) error {
                if network == "ipv4" {
                    // I want to  cancel connection here client.Get("http://myexample.com") return a non-nil err.
                    return errors.New("you should not use ipv4")
                }
                return nil
            },
        }).DialContext,
        MaxIdleConns:          100,
        IdleConnTimeout:       90 * …
Run Code Online (Sandbox Code Playgroud)

web-crawler go

10
推荐指数
1
解决办法
6206
查看次数

标签 统计

go ×1

web-crawler ×1