golang的UDP,听不到阻塞呼叫?

golang的UDP,听不到阻塞呼叫?,go,udp,Go,Udp,我正在尝试使用UDP作为协议在两台计算机之间创建一条双向街道。也许我不理解net.ListenUDP的意义。这不是一个阻拦电话吗?正在等待客户端连接 addr := net.UDPAddr{ Port: 2000, IP: net.ParseIP("127.0.0.1"), } conn, err := net.ListenUDP("udp", &addr) // code does not block here defer conn.Close() if err !

我正在尝试使用UDP作为协议在两台计算机之间创建一条双向街道。也许我不理解net.ListenUDP的意义。这不是一个阻拦电话吗?正在等待客户端连接

addr := net.UDPAddr{
    Port: 2000,
    IP:   net.ParseIP("127.0.0.1"),
}
conn, err := net.ListenUDP("udp", &addr)
// code does not block here
defer conn.Close()
if err != nil {
    panic(err)
}

var testPayload []byte = []byte("This is a test")

conn.Write(testPayload)

它没有阻塞,因为它在后台运行。然后你只需从连接中读取

addr := net.UDPAddr{
    Port: 2000,
    IP:   net.ParseIP("127.0.0.1"),
}
conn, err := net.ListenUDP("udp", &addr) // code does not block here
if err != nil {
    panic(err)
}
defer ln.Close()

var buf [1024]byte
for {
    rlen, remote, err := conn.ReadFromUDP(buf[:])
    // Do stuff with the read bytes
}


var testPayload []byte = []byte("This is a test")

conn.Write(testPayload)

检查答案。它有一个go中UDP连接的工作示例,以及一些使其工作得更好的提示。

UDP是无连接的,因此在ListenUDP上阻塞是没有意义的