用go语言实现UDP互相通信

使用Go语言实现UDP互相通信可以通过以下步骤实现:

  1. 导入net包,该包提供了UDP通信所需的函数和结构体。

  2. 创建本地UDP监听,使用net.ListenUDP()函数创建一个本地UDP监听,该函数需要指定本地IP地址和端口号。

  3. 创建远程UDP地址,使用net.ResolveUDPAddr()函数创建一个远程UDP地址,该函数需要指定远程IP地址和端口号。

  4. 启动接收协程,使用go关键字启动一个接收协程,该协程会一直阻塞在UDP连接的ReadFromUDP()函数上,等待接收数据。

  5. 发送数据,使用UDP连接的WriteToUDP()函数向远程主机发送数据,该函数需要传入一个字节数组作为数据和远程UDP地址。

  6. 关闭连接,使用UDP连接的Close()函数关闭连接。

下面是一个简单的示例代码:

package main

import (
    "fmt"
    "net"
)

func main() {
    // 创建本地UDP监听
    localAddr, _ := net.ResolveUDPAddr("udp", "127.0.0.1:8080")
    conn, _ := net.ListenUDP("udp", localAddr)
    defer conn.Close()

    // 创建远程UDP地址
    remoteAddr, _ := net.ResolveUDPAddr("udp", "127.0.0.1:8081")

    // 启动接收协程
    go func() {
        buffer := make([]byte, 1024)
        for {
            n, addr, _ := conn.ReadFromUDP(buffer)
            fmt.Printf("Received from %v: %s\n", addr, string(buffer[:n]))
        }
    }()

    // 发送数据
    data := []byte("Hello, UDP!")
    conn.WriteToUDP(data, remoteAddr)

    // 等待接收协程结束
    select {}
}

在上面的示例中,我们创建了一个本地IP地址为127.0.0.1、端口号为8080的UDP监听,并创建了一个远程IP地址为127.0.0.1、端口号为8081的UDP地址。然后我们启动了一个接收协程,该协程会一直阻塞在UDP连接的ReadFromUDP()函数上,等待接收数据。接着我们向远程主机发送了一条数据,并等待接收协程结束。当接收协程接收到数据时,会打印出接收到的数据和发送方的地址。