How do I stop a Listening server in Go

前端 未结 4 1988
长发绾君心
长发绾君心 2020-12-29 06:09

I\'ve been trying to find a way to stop a listening server in Go gracefully. Because listen.Accept blocks it is necessary to close the listening socket to sign

4条回答
  •  北海茫月
    2020-12-29 06:40

    Something among these lines might work in this case, I hope:

    // Listen for incoming connections
    func (es *EchoServer) serve() {
            for {
                    conn, err := es.listen.Accept()
                    if err != nil {
                        if x, ok := err.(*net.OpError); ok && x.Op == "accept" { // We're done
                                log.Print("Stoping")
                                break
                        }
    
                        log.Printf("Accept failed: %v", err)
                        continue
                    }
                    go es.respond(conn.(*net.TCPConn))
            }
            es.done <- true
    }
    

提交回复
热议问题