UDP协议User Datagram Protocol(用户数据报协议)
不需要建立连接就能直接进行数据发送和接收,属于不可靠没时序,速度快实用性好,通常用于视频直播
范例:
server服务端:开启服务器 > 不需要监听直接循环接收信息 > 转换成大写后conn.WriteToUDP()
client客户端:先建立连接 > 读取bufio.ReadString(‘\n‘)发送 > 接收返回的大写信息,Println()输出
package main //server服务端 import ( "fmt" "net" "strings" ) func main() { //01开启服务器 conn, err := net.ListenUDP("udp", &net.UDPAddr{ IP: net.IPv4(127, 0, 0, 1), Port: 40000, }) if err != nil { fmt.Println("listen UDP failed", err) } defer conn.Close() //02不需要建立连接,直接收发数据 var data [1024]byte for { //循环读取数据 n, addr, err := conn.ReadFromUDP(data[:]) if err != nil { fmt.Println("read from UDF failed", err) } fmt.Println(string(data[:n])) //转换成大写 reply := strings.ToUpper(string(data[:n])) //发送 conn.WriteToUDP([]byte(reply), addr) } }
package main //server服务端 import ( "fmt" "net" "strings" ) func main() { //01开启服务器 conn, err := net.ListenUDP("udp", &net.UDPAddr{ IP: net.IPv4(127, 0, 0, 1), Port: 40000, }) if err != nil { fmt.Println("listen UDP failed", err) } defer conn.Close() //02不需要建立连接,直接收发数据 var data [1024]byte for { //循环读取数据 n, addr, err := conn.ReadFromUDP(data[:]) if err != nil { fmt.Println("read from UDF failed", err) } fmt.Println(string(data[:n])) //转换成大写 reply := strings.ToUpper(string(data[:n])) //发送 conn.WriteToUDP([]byte(reply), addr) } }
原文:https://www.cnblogs.com/shijieziben/p/14307666.html