文章目录

使用栗子

conn, err := net.Dial("tcp", "google.com:80")
if err != nil {
// handle error
}
fmt.Fprintf(conn, "GET / HTTP/1.0\r\n\r\n")
status, err := bufio.NewReader(conn).ReadString('\n')
// ...

源码

​net.Dial​​ 的源码

// net.Dial函数解读
// 实际是对Dialer.Dial的一个封装, 封装后,可以直接调用Dial拨号,而不需要再去定义一个Dialer结构体对象,利用对象拨号,省去了定义结构体对象,封装时用的同名方法,便于记忆
func Dial(network, address string) (Conn, error) {
var d Dialer // 定义了一个 Dialer结构体对象,使用该对象的Dial方法去拨号,所以net.Dial 实际是对Dialer.Dial的一个封装
return d.Dial(network, address)
}

用法

总之,dial 只是做了一些预设置,并且返回了一个连接对象。

在网络network上连接地址address,并返回一个Conn接口。

可用的网络类型: “tcp”、“tcp4”、“tcp6”、“udp”、“udp4”、“udp6”、“ip”、“ip4”、“ip6”、“unix”、“unixgram”、“unixpacket”

​https://www.apiref.com/go-zh/net.htm#Dial​

【GoLang】网络连接 net.Dial_原力计划