UDP连接
UDP是一种无连接的协议,它不会确保数据在传输过程中的可靠性和顺序性。net
包提供了一些函数和类型,用于创建和管理UDP连接。
创建UDP连接
DialUDP
函数用于创建一个UDP连接。它需要指定服务器的IP地址和端口号。
conn, err := net.DialUDP("udp", nil, &net.UDPAddr{
IP: net.ParseIP("127.0.0.1"),
Port: 8080,
})
if err != nil {
// 处理错误
}
defer conn.Close()
// 向服务器发送数据
_, err = conn.Write([]byte("Hello, World!"))
if err != nil {
// 处理错误
}
// 从服务器接收数据
buf := make([]byte, 1024)
n, addr, err := conn.ReadFromUDP(buf)
if err != nil {
// 处理错误
}
fmt.Println("从", addr.String(), "接收到的数据为:", string(buf[:n]))
在上面的示例中,我们创建了一个UDP连接,并向服务器发送了一条消息。然后,我们从服务器接收了一条响应,并打印出了响应的来源地址。
监听UDP连接
ListenUDP
函数用于在指定的IP地址和端口上监听UDP连接。
ln, err := net.ListenUDP("udp", &net.UDPAddr{
IP: net.ParseIP("127.0.0.1"),
Port: 8080,
})
if err != nil {
// 处理错误
}
defer ln.Close()
// 从客户端接收数据
buf := make([]byte, 1024)
n, addr, err := ln.ReadFromUDP(buf)
if err != nil {
// 处理错误
}
fmt.Println("从", addr.String(), "接收到的数据为:", string(buf[:n]))
// 向客户端发送数据
_, err = ln.WriteToUDP([]byte("Hello, Client!"), addr)
if err != nil {
// 处理错误
}
在上面的示例中,我们创建了一个UDP监听器,并等待客户端连接。一旦客户端连接成功,我们就从客户端接收了一条消息,并向客户端发送了一条响应。