>백엔드 개발 >Golang >Go HTTP 서버가 특정 포트에서 수신 대기를 시작하는 시기를 어떻게 감지할 수 있나요?

Go HTTP 서버가 특정 포트에서 수신 대기를 시작하는 시기를 어떻게 감지할 수 있나요?

Barbara Streisand
Barbara Streisand원래의
2024-12-09 09:09:12656검색

How Can I Detect When a Go HTTP Server Starts Listening on a Specific Port?

Go에서 HTTP 서버 수신 상태 감지

Go에서 HTTP 서버로 작업할 때 서버 상태를 모니터링해야 할 수도 있습니다. 특정 포트에서 수신 대기를 시작할 때. 주어진 질문에서 강조된 것처럼 표준 net/http 라이브러리는 이 이벤트를 추적하는 명시적인 옵션을 제공하지 않습니다.

이 상황에서는 청취 프로세스를 직접 관리하고 청취 상태를 알릴 수 있습니다.

package main

import (
    "log"
    "net/http"
)

func main() {
    listener, err := net.Listen("tcp", ":8080")
    if err != nil {
        log.Fatal(err)
    }

    // Signal that the server is open for business.
    done := make(chan struct{})

    go func() {
        defer close(done)

        log.Println("Server is now listening on port :8080")

        if err := http.Serve(listener, http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {})); err != nil {
            log.Fatal(err)
        }
    }()

    // Wait for the "done" channel to be closed, indicating that the server has started listening.
    <-done
}

이 접근 방식에서는 리스너를 생성한 다음 goroutine을 사용하여 연결을 수락하고 요청 처리를 시작하는 Serve 메서드를 처리합니다. 동시에 청취 상태를 알리는 채널(완료)을 생성합니다. 기본 고루틴은 서버가 지정된 포트에서 수신을 시작할 때 발생하는 채널이 닫힐 때까지 기다립니다.

이 메커니즘을 사용하면 서버가 성공적으로 수신을 시작한 후 적절한 조치를 취하거나 필요한 구성을 수행할 수 있습니다.

위 내용은 Go HTTP 서버가 특정 포트에서 수신 대기를 시작하는 시기를 어떻게 감지할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.