Go语言Dial()函数实现Socket编程(新手必看)
在使用其他编程语言实现 Socket 编程时,一般都按照如下步骤展开:
但是,在使用 Go 语言实现 Socket 编程时,没有上述编码步骤,这是因为 Go 语言标准库抽象和封装了上述步骤。在 Go 语言中,不论使用什么协议建立何种形式的连接,都只需要调用标准库中的 Dial() 函数。
Dial() 函数的语法格式如下:
参数 net 有 9 个常用可选值。这些值分别代表在建立 Socket 连接时使用的通信协议,如下表所示。
下面介绍下使用 Dial() 函数按照几种常见协议建立连接的方法。
1) 使用 Dial() 函数通过 IP 地址建立 TCP 连接,代码如下:
2) 使用 Dial() 函数通过 IP 地址建立 UDP 协议,代码如下:
- 按照网络协议、IP 地址或域名建立 Socket;
- 使用端口绑定 Socket;
- 监听端口;
- 建立连接;
- 发送、接收数据。
但是,在使用 Go 语言实现 Socket 编程时,没有上述编码步骤,这是因为 Go 语言标准库抽象和封装了上述步骤。在 Go 语言中,不论使用什么协议建立何种形式的连接,都只需要调用标准库中的 Dial() 函数。
Dial() 函数的语法格式如下:
func Dial(net, addr string) (Conn, error)参数说明如下:
- net:网络协议的名字;
- addr:IP 地址或域名;在 IP 地址或域名后跟随端口号(端口号可选),用“:”分隔;
- Conn:连接对象;
- error:错误。
参数 net 有 9 个常用可选值。这些值分别代表在建立 Socket 连接时使用的通信协议,如下表所示。
net 的值 | 说明 |
---|---|
tcp | TCP 协议,其基于的 IP 协议的版本根据参数 address 的值自适应 |
tcp4 | 基于 IP 协议第 4 版的 TCP 协议 |
tcp6 | 基于 IP 协议第 6 版的 TCP 协议 |
udp | UDP 协议,其基于的 IP 协议的版本根据参数 address 的值自适应 |
udp4 | 基于 IP 协议第 4 版的 UDP 协议 |
udp6 | 基于 IP 协议第 6 版的 UDP 协议 |
unix | Unix 通信域下的内部 socket 协议,以 SOCK_STREAM 为 socket 类型 |
unixgram | Unix 通信域下的内部 socket 协议,以 SOCK_DGRAM 为 socket 类型 |
unixpacket | Unix 通信域下的内部 socket 协议,以 SOCK_SEQPACKET 为 socket 类型 |
下面介绍下使用 Dial() 函数按照几种常见协议建立连接的方法。
1) 使用 Dial() 函数通过 IP 地址建立 TCP 连接,代码如下:
conn, err := net.Dial("tcp", "127.0.0.1:3000")
2) 使用 Dial() 函数通过 IP 地址建立 UDP 协议,代码如下:
conn, err := net.Dial("udp", "127.0.0.1:3000")成功建立连接后,Dial() 函数返回一个连接对象(即 conn);反之,Dial() 函数返回一个错误(即 err)。