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