Go网络编程实战
Go网络编程实战
net 包基础
Go 的 net 包提供了丰富的网络编程接口。
TCP 客户端
conn, err := net.DialTimeout("tcp", "target:80", 3*time.Second)
if err != nil {
log.Fatal(err)
}
defer conn.Close()
conn.Write([]byte("GET / HTTP/1.0\r\n\r\n"))TCP 服务器
listener, _ := net.Listen("tcp", ":8080")
for {
conn, _ := listener.Accept()
go handleConn(conn)
}HTTP 客户端
client := &http.Client{Timeout: 10 * time.Second}
resp, err := client.Get("https://example.com")
body, _ := io.ReadAll(resp.Body)自定义协议实现
Go 的二进制处理能力强,适合实现自定义协议:
- 使用 encoding/binary 处理字节序
- 使用 bufio 实现高效的流读写
- 使用 net/http 实现自定义 Web 服务
总结
Go 的网络编程接口简洁高效,原生支持 HTTP/2、TLS 等现代协议,非常适合开发网络相关安全工具。