package main import ( "flag" "log" "sync" "weatherstation/internal/database" "weatherstation/internal/server" ) func main() { // 命令行参数 var webOnly = flag.Bool("web", false, "只启动Web服务器(Gin)") var udpOnly = flag.Bool("udp", false, "只启动UDP服务器") flag.Parse() // 设置日志 server.SetupLogger() // 初始化数据库连接 _ = database.GetDB() // 确保数据库连接已初始化 defer database.Close() // 根据命令行参数启动服务 if *webOnly { // 只启动Web服务器 log.Println("启动Web服务器模式...") if err := server.StartGinServer(); err != nil { log.Fatalf("启动Web服务器失败: %v", err) } } else if *udpOnly { // 只启动UDP服务器 log.Println("启动UDP服务器模式...") if err := server.StartUDPServer(); err != nil { log.Fatalf("启动UDP服务器失败: %v", err) } } else { // 同时启动UDP和Web服务器 log.Println("启动完整模式:UDP + Web服务器...") var wg sync.WaitGroup wg.Add(2) // 启动UDP服务器 go func() { defer wg.Done() log.Println("正在启动UDP服务器...") if err := server.StartUDPServer(); err != nil { log.Printf("UDP服务器异常退出: %v", err) } }() // 启动Web服务器 go func() { defer wg.Done() log.Println("正在启动Web服务器...") if err := server.StartGinServer(); err != nil { log.Printf("Web服务器异常退出: %v", err) } }() wg.Wait() } }