Go语言的net
库提供了丰富的网络编程接口,包括TCP、UDP、IP、端口等网络操作。以下是一些常用的功能和概念:
net.Listen
函数用于创建服务器监听。net.Dial
函数用于创建客户端连接。net.Listen
用于监听传入的TCP连接。net.ListenPacket
用于监听UDP数据包。net.Dial
用于拨号连接到TCP服务器。net.DialTimeout
用于带超时的拨号连接。net.LookupIP
用于解析主机名到IP地址。net.LookupHost
用于解析主机名到域名。net.LookupPort
用于解析服务名称到端口号。net.ParseIP
用于解析IP地址。net.JoinHostPort
用于将主机名和端口号合并成一个网络地址。net.Interface
用于获取网络接口信息。net.HardwareAddr
用于获取网络接口的硬件地址。net.Conn
接口表示一个通用的网络连接。net.Listener
接口用于监听传入的连接。net/http
库使用net
库,但提供了更高级的HTTP协议支持。net
库中的错误通常实现了error
接口。
TCP/UDP 服务器和客户端:
监听和拨号:
网络地址:
解析和格式化地址:
接口和硬件地址:
连接和套接字:
多路复用:
错误处理:
TCP连接示例: “`go package main
import (
"fmt"
"net"
)
func main() {
// 创建TCP服务器
listener, err := net.Listen("tcp", ":8080")
if err != nil {
panic(err)
}
defer listener.Close()
fmt.Println("Listening on " + ":8080")
// 循环等待连接
for {
conn, err := listener.Accept()
if err != nil {
continue
}
go handleRequest(conn)
}
}
func handleRequest(conn net.Conn) {
defer conn.Close()
// 处理连接...
} “`
UDP数据包示例:
package main
import (
"fmt"
"net"
)
func main() {
addr, err := net.ResolveUDPAddr("udp", ":8080")
if err != nil {
panic(err)
}
conn, err := net.ListenUDP("udp", addr)
if err != nil {
panic(err)
}
defer conn.Close()
for {
buf := make([]byte, 1024)
n, remoteAddr, err := conn.ReadFromUDP(buf)
if err != nil {
continue
}
fmt.Printf("Received %d bytes from %s: %s\n", n, remoteAddr, string(buf[:n]))
// 发送响应
_, err = conn.WriteToUDP([]byte("Hello"), remoteAddr)
if err != nil {
fmt.Println(err)
}
}
}
这些只是net
库的一部分功能,Go的net
库非常强大,几乎涵盖了所有网络编程的需求。如果你有具体的问题或者需要示例代码,随时告诉我!