Go-标准库-net(二)

2023-04-21 15:38:05 浏览数 (1)

UDP连接

UDP是一种无连接的协议,它不会确保数据在传输过程中的可靠性和顺序性。net包提供了一些函数和类型,用于创建和管理UDP连接。

创建UDP连接

DialUDP函数用于创建一个UDP连接。它需要指定服务器的IP地址和端口号。

代码语言:javascript复制
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连接。

代码语言:javascript复制
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监听器,并等待客户端连接。一旦客户端连接成功,我们就从客户端接收了一条消息,并向客户端发送了一条响应。

go

0 人点赞