udp.go 767 字节
Newer Older
1 2 3 4 5 6 7
package udp

import (
	"fmt"
	"log"
	"net"

Q
qinyening 已提交
8
	"github.com/didi/nightingale/v4/src/modules/agentd/config"
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
)

var (
	udpConn *net.UDPConn = nil
)

func Start() {
	if !config.Config.Udp.Enable {
		log.Println("udp server disabled")
		return
	}

	address, _ := net.ResolveUDPAddr("udp4", config.Config.Udp.Listen)
	conn, err := net.ListenUDP("udp4", address)
	if err != nil {
		errsmg := fmt.Sprintf("listen udp error, [addr: %s][error: %s]", config.Config.Udp.Listen, err.Error())
		log.Printf(errsmg)
		panic(errsmg)
	}
	log.Println("udp start, listening on ", config.Config.Udp.Listen)

	// 保存 udp服务链接
	udpConn = conn

	// 开启 udp数据包处理进程
	go handleUdpPackets()
}

func stop() error {
	if udpConn != nil {
		udpConn.Close()
	}
	return nil
}