我可以使用Go从一个Web应用程序设置多端口吗?

时间:2015-02-26 18:01:52

标签: go

据我所知,我可以使用Golang运行简单的Web服务器,只需使用http包,比如

http.ListenAndServe(PORT, nil)

其中PORT是要侦听的TCP地址。

我可以将PORT用作PORT S ,例如来自一个应用程序的http.ListenAndServe(":80, :8080", nil)吗?

可能我的问题很愚蠢,但是"谁不问,他不会得到答案!"

感谢您提前!

2 个答案:

答案 0 :(得分:12)

不,你不能。

但是,您可以在不同的端口上启动多个侦听器

go http.ListenAndServe(PORT, handlerA)
http.ListenAndServe(PORT, handlerB)

答案 1 :(得分:2)

这是一个简单的示例:

package main

import (
    "fmt"
    "net/http"
)

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

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

func main() {
    serverMuxA := http.NewServeMux()
    serverMuxA.HandleFunc("/hello", hello)

    serverMuxB := http.NewServeMux()
    serverMuxB.HandleFunc("/world", world)

    go func() {
        http.ListenAndServe("localhost:8081", serverMuxA)
    }()

    http.ListenAndServe("localhost:8082", serverMuxB)
}