go监听多个端口处理不同的http请求
时间: 2024-01-22 12:20:08 浏览: 34
要监听多个端口处理不同的 HTTP 请求,你可以通过创建多个 HTTP server 来实现,每个 server 都监听不同的端口。以下是一个示例代码:
```go
package main
import (
"fmt"
"log"
"net/http"
)
func main() {
// 创建并启动第一个 HTTP server,监听端口 8080
server1 := &http.Server{
Addr: ":8080",
Handler: http.HandlerFunc(handleRequest1),
}
go func() {
if err := server1.ListenAndServe(); err != nil {
log.Fatal(err)
}
}()
// 创建并启动第二个 HTTP server,监听端口 8081
server2 := &http.Server{
Addr: ":8081",
Handler: http.HandlerFunc(handleRequest2),
}
go func() {
if err := server2.ListenAndServe(); err != nil {
log.Fatal(err)
}
}()
// 保持主 goroutine 运行
select {}
}
// 处理第一个 HTTP server 的请求
func handleRequest1(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, "This is server 1!")
}
// 处理第二个 HTTP server 的请求
func handleRequest2(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, "This is server 2!")
}
```
在上面的代码中,我们创建了两个 HTTP server,一个监听端口 8080,另一个监听端口 8081。每个 server 都有自己的处理函数 `handleRequest1` 和 `handleRequest2`。在 `main` 函数中,我们启动了这两个 server,并使用 `select {}` 使主 goroutine 一直运行。这样就可以同时处理来自不同端口的 HTTP 请求了。