首页 > 文章列表 > 如何在 Go 中停止监听服务器?

如何在 Go 中停止监听服务器?

golang
456 2023-04-12

问题内容

如何在 Go 中停止监听服务器?

正确答案

要停止 Go 中的服务器监听,可以使用net.ListenerClose方法。这个方法会立即停止服务器监听,并释放与该监听器关联的所有资源。

以下是一个示例代码片段,说明如何停止 Go 中的服务器监听:

import (
    "net"
    "log"
)

func main() {
    // 创建监听器
    l, err := net.Listen("tcp", ":8080")
    if err != nil {
        log.Fatal(err)
    }

    // 在 goroutine 中监听请求
    go func() {
        for {
            _, err := l.Accept()
            if err != nil {
                log.Println(err)
                return
            }
        }
    }()

    // 程序执行到这里时,服务器开始监听
    log.Println("Server is listening...")

    // 停止服务器监听
    err = l.Close()
    if err != nil {
        log.Fatal(err)
    }

    log.Println("Server stopped listening.")
}

在上面的代码中,我们首先创建一个监听器并在 goroutine 中监听请求。当我们想要停止服务器监听时,调用l.Close()方法即可。此时,Accept()方法会返回一个net.ErrClosed错误,表示监听器已关闭。