ReadFromUDP 不会阻塞

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


桃花长相依
浏览 683回答 2
2回答

动漫人物

我将系统更新为 osx 10.8.4 上面的代码无法正常工作。我将udp 服务器代码与我的进行比较。并改变var buf []byte与buf := make([]byte, 1024)现在效果很好。

慕容708150

我相信 OSX 中有些东西坏了。您的代码,只是稍微修改为不忽略错误等,在 Linux 上运行得很好。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go