package network

import ( 'github.com/rs/xid' 'net' 'time' )

func DialTcp(addr string, localAddr string) (req *Request, err error) { local, err := net.ResolveTCPAddr('tcp', localAddr) if err != nil { return nil, err }

conn, err := net.DialTCP('tcp', local, &net.TCPAddr{IP: net.ParseIP(addr)})
if err != nil {
    return nil, err
}

return &Request{
    ISStream:    true,
    Conn:        conn,
    RequestID:   xid.New().String(),
    RequestTime: time.Now(),
}, nil

}

func DialUdp(addr string, localAddr string) (req *Request, err error) { local, err := net.ResolveUDPAddr('udp', localAddr) if err != nil { return nil, err }

udpAddr, err := net.ResolveUDPAddr('udp', addr)
if err != nil {
    return nil, err
}

conn, err := net.DialUDP('udp', local, udpAddr)
if err != nil {
    return nil, err
}

return &Request{
    ISStream:    false,
    PacketConn:  conn,
    RequestID:   xid.New().String(),
    RequestTime: time.Now(),
}, nil

}

Go 语言网络编程:指定本地 IP 出口连接 TCP/UDP

原文地址: https://www.cveoy.top/t/topic/lL0P 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录