Go使用Gin框架开发的Web程序部署在Linux时,无法绑定监听Ipv4端口

最近有写一部分go语言开发的程序,在部署程序时发现,程序在启动后并没有绑定ipv4的端口,而是直接监听绑定ipv6的端口。

当我用netstat -antup | grep 3601查找我的gin服务启动的端口占用情况的时候发现,我的服务直接绑定了tcp6 (也就是监听ipv6协议的 3601端口),但是我服务器仅仅只开通了ipv4的协议,所以,一直访问不通。
在这里插入图片描述
解决方案:

方案一:

	// gin服务的路由(也就是我们常说的请求访问路径的注册)
	r := router.SetupRouter()
	port := fmt.Sprintf(":%s", config.ListenerPort)
	// 强制启动绑定给ipv4
	server := &http.Server{Addr: port, Handler: r}
	ln, err := net.Listen("tcp4", port)
	if err != nil {
		panic(err)
	}
	type tcpKeepAliveListener struct {
		*net.TCPListener
	}
	erred := server.Serve(tcpKeepAliveListener{ln.(*net.TCPListener)})
	log.Println("server start success", erred)
	if erred != nil {
		panic(err)
	}

方案二:
直接关闭linux的ipv6协议

方案三(不推荐):
Linux服务器直接开放ipv6端口,但是可能部分网络不支持ipv6访问。

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 Gin 框架编写的程序如下所示: ```go package main import ( "github.com/gin-gonic/gin" "net/http" ) func main() { // 创建 Gin 实例 r := gin.Default() // 设置 index 路径对应的处理函数 r.GET("/index", HandlerIndex) // 启动服务器 err := r.Run(":8888") if err != nil { panic(err) } } // 处理 index 路径的函数 func HandlerIndex(c *gin.Context) { c.HTML(http.StatusOK, "index.html", gin.H{ "title": "Hello, Gin!", }) } ``` 在上面的代码中,我们首先创建了一个 Gin 实例,并使用 `r.GET` 函数将 `/index` 路径与 `HandlerIndex` 函数绑定。`HandlerIndex` 函数会将一个 HTML 模板渲染成 HTML 页面并返回给客户端。最后,我们使用 `r.Run` 函数启动服务器监听 8888 端口。 如果不使用 Gin 框架,可以使用 Go 标准库来实现: ```go package main import ( "net/http" ) func main() { // 设置 index 路径对应的处理函数 http.HandleFunc("/index", HandlerIndex) // 启动服务器 err := http.ListenAndServe(":8888", nil) if err != nil { panic(err) } } // 处理 index 路径的函数 func HandlerIndex(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "text/html") w.Write([]byte(` <!DOCTYPE html> <html> <head> <title>Hello, Go!</title> </head> <body> <h1>Hello, Go!</h1> </body> </html> `)) } ``` 在上面的代码中,我们使用 `http.HandleFunc` 函数将 `/index` 路径与 `HandlerIndex` 函数绑定。`HandlerIndex` 函数直接将 HTML 页面写入响应体。最后,我们使用 `http.ListenAndServe` 函数启动服务器监听 8888 端口

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值