我有一個創建UDP服務器所需的端口列表。我試過這個 aproachfor _, r := range routingTable.Routes { if r.Metric == 0 { wg.Add(1) go func() { conn, err := net.ListenUDP("udp4", &r.OriginPort) if err != nil { log.Fatalf("Error occured starting the server: %s", err) } else { log.Printf("Listening on port: %s", r.OriginPort.String()) } defer conn.Close() buffer := make([]byte, 1024) for { conn.ReadFromUDP(buffer) } }() wg.Wait() } }但它不起作用。我能做些什么來使它工作?
1 回答

紫衣仙女
TA貢獻1839條經驗 獲得超15個贊
正如@CeriseLimon所指出的:不要在每次迭代時制作goroutine塊,移動到循環之外
wg.Wait()
不要忘記從每個 goroutine 中調用:在每個函數中添加一個調用
wg.Done()
defer wg.Done()
(由于您的聽力歌羅提永不返回,因此第二點有點理論性...顯然,添加一些代碼來讓你的聽眾做一些事情,如果可能的話,干凈利落地退出)
- 1 回答
- 0 關注
- 124 瀏覽
添加回答
舉報
0/150
提交
取消