net 包提供了可移植的网络 I/O 接口,包括 TCP/IP、UDP、域名解析和Unix 域 socket
使用监听常用模版
关键函数 Dial Listen Accept
端口监听
// 监听端口
listen, err := net.Listen("tcp", "127.0.0.1:8080")
if err != nil {
// 处理错误
}
// 不断循环接收
for {
// 在没有接收到数据前这里是阻塞的
conn, err := listen.Accept()
if err != nil {
// 处理异常
continue
}
// 开启协程
go handleConnect(conn)
}
handleConnect 处理
data := make([]byte, 4096)
n, err := conn.Read(data)
if err != nil {
// 处理异常
}
// 这样 data 就可以拿到数据了,并且 n 还可以知道 byte 数组有多少个元素
建立链接
conn, err := net.Dial("tcp", "google.com:80")
if err != nil {
// 处理异常
}