我尝试使用 go 构建一个 udp 服务器,发现 UDPConn 的 ReadFromUDP 方法不会阻塞线程。我谷歌,有些人面临这个问题,但没有找到解决方案。
我的系统是 osx 10.8.2,go 版本是 1.1.1
代码列表如下
addr, _ := net.ResolveUDPAddr("udp", "localhost:10234")
conn, err := net.ListenUDP("udp", addr)
if err != nil {
fmt.Println(err.Error())
return
}
defer conn.Close()
var buf []byte
for {
n, remote_addr, _ := conn.ReadFromUDP(buf)
fmt.Println("from", remote_addr,"got message:", string(buf[:n]))
}
我得到了一份清单:from <nil> got message: