首页 文章 Go语言基础 Golang net/http包 同时监听多个端口
0
0
0
94

Golang net/http包 同时监听多个端口

函数 端口 多个 同时 Golang http

背景
在golang中 需要同时监听多个端口 对http请求进行相同的处理(handler)

实现

代码如下 很简单

func handler1(w http.ResponseWriter, r *http.Request) {
	fmt.Fprintf(w, "Hello!")
}

func main() {
	ports := []string{":25000", ":25001"}
	for _, v := range ports {
		go func(port string) { //每个端口都扔进一个goroutine中去监听
			mux := http.NewServeMux()
			mux.HandleFunc("/", handler1)
			http.ListenAndServe(port, mux)
		}(v)
	}
	select {}
}

注意点

1 如果直接在goroutine中使用range出来的value 会提示range variable v captured by func literal

go func() { 
			mux := http.NewServeMux()
			mux.HandleFunc("/", handler1)
			http.ListenAndServe(v, mux)
		}()

当goroutine中使用到v时,此时v的只都会变成list中最后一个的数值
详情可见:https://segmentfault.com/a/1190000010884717

2 不使用select{}
for循环后 生成goroutine 然后就直接退出了 0.0 这当然不是我们想要的
所以加一个可以让代码停下来的

3 当然 如果想对不同端口接收到的信息进行不同的处理 就需要自行再加上一些判断啦

到此这篇关于“Golang net/http包 同时监听多个端口”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持Go语言编程!

相关文章

创建博客

开始创作
写作能提升自己能力,也能为他人分享知识。

在线教程

查看更多
  • Go入门指南

    Go入门指南

  • Go语言高级编程

    Go语言高级编程

  • Go Web 编程

    Go Web 编程

  • GO专家编程

    GO专家编程

  • Go语言四十二章经

    Go语言四十二章经

  • 数据结构和算法(Golang实现)

    数据结构和算法(Golang实现)

Go语言编程网

微信扫码关注订阅号


博客 资讯 教程 我的