使用 golang 创建多个 UDP 服务器

我有一个创建UDP服务器所需的端口列表。我试过这个 aproach


for _, 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()

        }

    }

但它不起作用。我能做些什么来使它工作?


慕虎7371278
浏览 114回答 1
1回答

紫衣仙女

正如@CeriseLimon所指出的:不要在每次迭代时制作goroutine块,移动到循环之外wg.Wait()不要忘记从每个 goroutine 中调用:在每个函数中添加一个调用wg.Done()defer wg.Done()(由于您的听力歌罗提永不返回,因此第二点有点理论性...显然,添加一些代码来让你的听众做一些事情,如果可能的话,干净利落地退出)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go