我有一个创建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 关注
- 108 浏览
添加回答
举报
0/150
提交
取消