0

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

4

2 回答 2

2

我相信 OSX 有问题。您的代码仅稍作修改以不忽略错误等,在 Linux 上运行良好。

于 2013-07-29T07:57:01.120 回答
2

我将系统更新为 osx 10.8.4 上面的代码无法正常工作。

我将udp 服务器代码与我的进行比较。

var buf []byte并改变buf := make([]byte, 1024)

现在效果很好。

于 2013-07-29T09:04:01.303 回答