2013-07-29 71 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)

現在工作得很好。