package main
import (
"fmt"
"log"
"net/http"
"os"
"strings"
)
// GOOS=linux GOARCH=amd64 go build -o server_linux_amd64 main.go
// ./server_linux_amd64 8001 8002 8003 8004
func main() {
// 检查是否有命令行参数
if len(os.Args) < 2 {
log.Fatal("Usage: go run main.go <port1> <port2> <port3> ...")
}
// 获取命令行参数中的端口号
ports := os.Args[1:] // 从第一个参数开始获取端口号
for _, port := range ports {
go func(p string) {
mux := http.NewServeMux()
mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Server running on port %s\n", p)
})
server := &http.Server{
Addr: ":" + p,
Handler: mux,
}
log.Printf("Starting server on port %s\n", p)
if err := server.ListenAndServe(); err != nil && err != http.ErrServerClosed {
log.Printf("Server on port %s failed to start: %v", p, err)
}
}(port)
}
log.Printf("Server started on ports: %s", strings.Join(ports, ", "))
// 保持程序运行
select {}
}