[英]ReadFromUDP does not block
我試圖用go構建udp服務器,發現UDPConn的ReadFromUDP方法不會阻塞線程。 我在Google上搜索到有人遇到此問題,但未找到解決方案。
我的系統是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:
我相信OSX中有問題。 您的代碼( 僅進行了少量修改以不忽略錯誤等)在Linux上運行良好。
我將系統更新為上述osx 10.8.4代碼,無法正常運行。
我將udp服務器代碼與我的進行比較。
並使用buf := make([]byte, 1024)
更改var buf []byte
buf := make([]byte, 1024)
現在效果很好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.