You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Golang创建监听80端口的IPv6服务器?

修改Go代码以监听IPv6的80端口

嘿,要让你的Go HTTP服务器监听IPv6地址的80端口其实很简单,只需要调整一下http.ListenAndServe的地址参数就行,我给你一步步说明:

为什么原来的代码只监听IPv4?

当你用:80作为监听地址时,Go的net/http包默认会绑定到IPv4的所有接口(也就是0.0.0.0:80),所以它不会处理IPv6的请求。要切换到IPv6,得用IPv6特有的地址格式。

修改后的完整代码

直接把监听地址改成[::]:80就搞定了——这里的::是IPv6的通配符(和IPv4的0.0.0.0作用一样,代表所有IPv6接口),方括号是必须的,用来区分IPv6地址和端口号:

package main

import (
    "fmt"
    "net/http"
)

func h(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "Test from IPv6 server!")
}

func main() {
    http.HandleFunc("/", h)
    // 绑定到所有IPv6接口的80端口
    if err := http.ListenAndServe("[::]:80", nil); err != nil {
        fmt.Printf("Server failed to start: %v\n", err)
    }
}

几个要注意的点

  • 先确认系统支持IPv6:你的服务器或者本地机器得先启用IPv6功能,不然代码跑起来也没法监听IPv6地址。
  • 权限问题:在Linux/macOS这类系统里,监听80端口需要root权限,直接跑的话可能会报错,记得用sudo启动程序。
  • 要不要同时监听IPv4?:如果想让服务器同时响应IPv4和IPv6请求,大多数现代系统(支持双栈)里用[::]:80会自动兼容IPv4(通过IPv4映射的IPv6地址)。要是只想纯监听IPv6,可能需要额外配置系统或者用自定义的net.Listen来限制,但一般来说默认的双栈支持够用了。

内容的提问来源于stack exchange,提问作者anon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:10:42