Golang 高性能UDP Server实现
发布时间:2020-12-16 09:28:05 所属栏目:大数据 来源:网络整理
导读:通过Goroutine实现UDP消息并发处理 package mainimport ( " net " " fmt " " os " ) // 限制goroutine数量 var limitChan = make(chan bool , 1000 ) // UDP goroutine 实现并发读取UDP数据 func udpProcess(conn * net.UDPConn) { // 最大读取数据大小 data
通过Goroutine实现UDP消息并发处理 package main import ( "net" "fmt" "os" ) // 限制goroutine数量 var limitChan = make(chan bool,1000) // UDP goroutine 实现并发读取UDP数据 func udpProcess(conn *net.UDPConn) { // 最大读取数据大小 data := make([]byte,1024) n,_,err := conn.ReadFromUDP(data) if err != nil { fmt.Println("failed read udp msg,error: " + err.Error()) } str := string(data[:n]) fmt.Println("receive from client,data:" + str) <- limitChan } func udpServer(address string) { udpAddr,err := net.ResolveUDPAddr("udp",address) conn,err := net.ListenUDP("udp",udpAddr) defer conn.Close() if err != nil { fmt.Println("read from connect failed,err:" + err.Error()) os.Exit(1) } for { limitChan <- true go udpProcess(conn) } } func main() { address := "0.0.0.0:8080" udpServer(address) } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |