2013-07-29 73 views
0

我试图用go来构建一个udp服务器,并且发现UDPConn的ReadFromUDP方法不会阻塞该线程。我谷歌,有一些人面临这个问题,没有找到解决办法。ReadFromUDP不会阻止

我的系统是OSX 10.8.2,走的版本是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

我相信有什么东西在OSX破。你的代码modified only slightly to not ignore errors etc.在Linux上运行得很好。

+0

我想出来,[golang问题](https://code.google.com/p/go/issues/detail?id=4796)请注意,在osx 10.8.2中有问题,但也有问题在我的代码 – enzoyang

+0

感谢您的帮助 – enzoyang

+0

@enzoyang根据错误报告,这是固定在10.8.3。如果没有其他事情阻止你这样做,那么升级可能是值得的。 – Intermernet

2

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

我比较udp server code与我的。

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

现在工作得很好。