package main
import (
"fmt"
"net/http"
)
func main() {
http.HandleFunc("/", handler)
http.HandleFunc("/hello", helloHandler)
go http.ListenAndServe(":8080", nil)
go http.ListenAndServe(":8081", nil)
fmt.Println("服务器已启动!按 Enter 键退出...")
fmt.Scanln()
}
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "欢迎访问我的并发 Web 服务器!")
}
func helloHandler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello, World!")
}
在这个示例中,我们首先导入 Go 的fmt和net/http包。然后我们定义了一个main函数,其中我们使用http.HandleFunc函数将两个处理函数与不同的路径关联起来。我们还使用了两个并发的http.ListenAndServe函数,分别在两个不同的端口上监听客户端请求。最后,我们使用fmt.Scanln函数等待用户按下 Enter 键以退出程序。
在handler和helloHandler函数中,我们使用fmt.Fprintf函数将欢迎消息和“Hello, World!”消息写入 HTTP 响应体。当客户端请求根路径时,会调用handler函数,而请求路径为“/hello”时,则会调用helloHandler函数。
通过使用并发的http.ListenAndServe函数,我们能够让我们的 Web 服务器同时处理多个客户端请求,从而提高了 Web 服务器的并发性能。
要运行此程序,需要先安装 Go 开发环境并设置好环境变量。然后可以在终端或命令提示符中进入包含该程序源代码的目录,并运行以下命令:
go run main.go
运行后,程序将同时在两个端口上启动 Web 服务器,并输出一条消息指示服务器已启动。此时,您可以在 Web 浏览器中访问这两个端口,并查看服务器响应的欢迎消息和“Hello, World!”消息。