我尝试使用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:
答案 0 :(得分:2)
我相信OSX中存在某些问题。你的代码modified only slightly to not ignore errors etc.在Linux上运行得很好。
答案 1 :(得分:2)
我将我的系统更新为osx 10.8.4以上代码无法正常工作。
我将udp server code与我的比较。
并使用var buf []byte
buf := make([]byte, 1024)
现在效果很好。