Go 语言基础 UDP 编程

      最后更新:2021-11-08 08:44:34 手机定位技术交流文章

      Go 语言基础 UDP 编程

      UDP协议

      在OSI参考模式(开放系统互连、开放系统互连)中,UDP协议(用户数据表协议)是一个用户数据报告协议,一个没有连接的传输层协议,直接提供和接收数据不需要连接,这是一个不稳定和永恒的通信协议,而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
      		}
      	}
      }
      
      

      UDP客户端

      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)
      
      
      
      }
      

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/12934.html

          热门文章

          文章分类