angle_dtu/main.go
2025-05-15 13:34:47 +08:00

70 lines
1.6 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()
var wg sync.WaitGroup
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)
}
}()
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()
}