Go 语言网络编程:指定本地 IP 出口连接 TCP/UDP
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
}
原文地址: https://www.cveoy.top/t/topic/lL0P 著作权归作者所有。请勿转载和采集!