我尝试用go搭建一个udp server,发现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:
最佳答案
我相信 OSX 中有一些问题。您的代码,modified only slightly to not ignore errors etc. , 在 Linux 上运行得很好。
关于sockets - ReadFromUDP 不阻塞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17918495/