angle_dtu/main.go
2025-05-15 12:17:41 +08:00

77 lines
1.8 KiB
Go

package main
import (
"flag"
"fmt"
"log"
"sync"
)
func main() {
// 命令行参数解析
serverType := flag.String("server", "tcp", "服务器类型: tcp 或 udp")
tcpPort := flag.String("tcpport", "10002", "TCP服务器端口")
udpPort := flag.String("udpport", "10002", "UDP服务器端口")
httpPort := flag.String("httpport", "10001", "HTTP服务器端口")
flag.Parse()
// 初始化日志
if err := InitLogger(); err != nil {
log.Fatalf("初始化日志系统失败: %v", err)
}
defer CloseLogger()
// 启动日志轮转
StartLogRotation()
// 初始化数据库
err := InitDB()
if err != nil {
log.Fatalf("初始化数据库失败: %v", err)
}
defer CloseDB()
fmt.Println("iProbe 斜侧仪监控系统启动中...")
var wg sync.WaitGroup
// 根据选择启动TCP或UDP服务器
wg.Add(1)
go func() {
defer wg.Done()
if *serverType == "tcp" {
Logger.Printf("使用TCP服务器模式")
if err := StartTCPServer(":" + *tcpPort); err != nil {
log.Fatalf("TCP服务器启动失败: %v", err)
}
} else if *serverType == "udp" {
Logger.Printf("使用UDP服务器模式")
if err := StartUDPServer(":" + *udpPort); err != nil {
log.Fatalf("UDP服务器启动失败: %v", err)
}
} else {
log.Fatalf("未知的服务器类型: %s", *serverType)
}
}()
// 启动HTTP服务器
wg.Add(1)
go func() {
defer wg.Done()
if err := StartHTTPServer(":" + *httpPort); err != nil {
log.Fatalf("HTTP服务器启动失败: %v", err)
}
}()
if *serverType == "tcp" {
fmt.Println("服务器已启动成功")
fmt.Printf("- HTTP接口: http://localhost:%s\n", *httpPort)
fmt.Printf("- TCP接口: localhost:%s\n", *tcpPort)
} else {
fmt.Println("服务器已启动成功")
fmt.Printf("- HTTP接口: http://localhost:%s\n", *httpPort)
fmt.Printf("- UDP接口: localhost:%s\n", *udpPort)
}
wg.Wait()
}