golang 简单 http 服务

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 {}
}

posted @ 2026-01-07 09:13  LiuChengloong  阅读(3)  评论(0)    收藏  举报