最后更新:2021-11-08 08:44:34 手机定位技术交流文章
在OSI参考模式(开放系统互连、开放系统互连)中,UDP协议(用户数据表协议)是一个用户数据报告协议,一个没有连接的传输层协议,直接提供和接收数据不需要连接,这是一个不稳定和永恒的通信协议,而UDP协议更实时,通常用于视频广播应用。
在Go语网络软件包中,联合民主党服务结束代码如下:
package main
import (
"fmt"
"net"
)
// UDP server端
func main() {
listen, err := net.ListenUDP("udp", &net.UDPAddr{
IP: net.IPv4(0, 0, 0, 0),
Port: 9999,
})
if err != nil {
fmt.Println("listen failed, err: ", err)
}
defer listen.Close()
for {
var data [1024]byte
n, addr, err := listen.ReadFromUDP(data[:]) // 接收数据
if err != nil {
fmt.Println("reD UDP FAILED, ERR:", err)
}
fmt.Printf("data: %v, addr: %v, count: %vn", string(data[:n]), addr, n)
_, err = listen.WriteToUDP(data[:n], addr) // 发送数据
if err != nil {
fmt.Println("write to upp failed, err: ", err)
continue
}
}
}
Go语网络软件包的UDP客户代码如下:
package main
import (
"fmt"
"net"
)
func main() {
socket, err := net.DialUDP("udp", nil, &net.UDPAddr{
IP: net.IPv4(0,0,0, 0),
Port: 9999,
})
if err != nil{
fmt.Println("连接服务端失败, err: ", err)
return
}
defer socket.Close()
sendDate := []byte("hello server")
_, err = socket.Write(sendDate) // 发送数据
if err != nil{
fmt.Println("发送数据失败,err:", err)
}
data := make([]byte, 4096)
n, remoteAddr, err := socket.ReadFromUDP(data) // 接收数据
if err != nil{
fmt.Println("接收数据失败err: ", err)
return
}
fmt.Printf("recv: %v addr: %v conut: %v n", string(data[:]), remoteAddr, n)
}
本文由 在线网速测试 整理编辑,转载请注明出处。