go监听多个端口处理http请求
时间: 2023-08-06 22:08:23 浏览: 62
可以使用 Go 的 `net/http` 包来监听多个端口处理 HTTP 请求,具体可以按照以下步骤进行:
1. 首先,你需要定义一个 `http.Handler` 实现,用于处理所有的 HTTP 请求。比如:
```go
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello, world!")
}
```
2. 接着,你需要使用 `http.NewServeMux` 创建一个新的 HTTP 处理器,以便能够将多个 URL 路由到相应的处理器函数上。例如:
```go
mux := http.NewServeMux()
mux.HandleFunc("/", handler)
```
这里我们只注册了一个根路径 `/` 的处理器函数 `handler`,实际上你可以根据需要注册任意数量的处理器函数。
3. 然后,你需要使用 `http.ListenAndServe` 函数来启动 HTTP 服务器并开始监听指定的端口。例如:
```go
go func() {
err := http.ListenAndServe(":8080", mux)
if err != nil {
log.Fatal(err)
}
}()
go func() {
err := http.ListenAndServe(":8081", mux)
if err != nil {
log.Fatal(err)
}
}()
```
在这个例子中,我们使用了两个 goroutine 分别监听端口 `8080` 和 `8081`,并将它们绑定到同一个处理器 `mux` 上。你可以根据需要添加更多的 goroutine 来监听更多的端口。
4. 最后,你可以在 `main` 函数中加入 `select {}` 来使程序一直运行。这样,你就可以在浏览器中访问 `http://localhost:8080` 和 `http://localhost:8081` 来测试你的程序了。
完整代码示例如下:
```go
package main
import (
"fmt"
"log"
"net/http"
)
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello, world!")
}
func main() {
mux := http.NewServeMux()
mux.HandleFunc("/", handler)
go func() {
err := http.ListenAndServe(":8080", mux)
if err != nil {
log.Fatal(err)
}
}()
go func() {
err := http.ListenAndServe(":8081", mux)
if err != nil {
log.Fatal(err)
}
}()
select {}
}
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)