内网穿透 篇五:通过 ddns-go 动态域名解析 实现公网访问内网服务
package main
import (
"fmt"
"log"
"net/http"
"github.com/gorilla/mux"
"github.com/phayes/freeport"
"github.com/qiniu/http-go-sdk/v7/hack"
)
func main() {
// 获取一个可用的端口号
port, err := freeport.GetFreePort()
if err != nil {
log.Fatal(err)
}
// 创建一个 HTTP 服务器
server := &http.Server{
Addr: fmt.Sprintf(":%d", port),
Handler: mux.NewRouter(),
}
// 使用 hack.HijackHttpListenAndServe 方法来监听并服务于上述端口
hack.HijackHttpListenAndServe(server)
}
这段代码使用了hack.HijackHttpListenAndServe
函数替换了标准库中的http.ListenAndServe
函数。它首先获取一个可用的端口号,然后创建一个http.Server
实例并设置其监听地址。最后,它使用hack.HijackHttpListenAndServe
函数来启动服务,而不会阻塞主线程。这样做可以让服务在后台持续运行,并且能够处理外部的HTTP请求。
评论已关闭