ReadFromUDP不会阻止

时间:2013-07-29 07:41:50

标签: sockets go

我尝试使用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:

2 个答案:

答案 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)

现在效果很好。