ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

网络编程【4】Golang创建UDP服务器和客户端

2021-04-05 12:01:10  阅读:163  来源: 互联网

标签:UDP err byte Golang 接字 net data 连接 客户端


目录:
- 一、为何UDP不需要listen:
- 二、服务端:
  - 1.建立套接字
  - 2.对套接字操作
  	  - 循环读取数据
  	  -	回复消息
- 三、客户端:
  - 1.连接服务器
  - 2.写入数据
  - 3.读取消息

一、为何UDP不需要listen
listen()是进入监听状态,表示愿意接收连接请求。
accept()是接受新连接。
listen之后有连接请求就将其放到队列中,accept()时把新连接请求从队列中取出,建立新的socket。

UDP无法保证数据安全是因为只需要收发即可,无需建立连接
而TCP是需要建立连接确保数据的安全性

二、服务端

func main() {
	// 1.开启监听(建立套接字)
	listener, err := net.ListenUDP("udp", &net.UDPAddr{
		IP:   net.IPv4(0, 0, 0, 0),
		Port: 9091,
	})
	if err != nil {
		log.Fatal(err)
	}
	defer listener.Close()
	// 2.循环读取数据
	for {
		var data [1024]byte
		n, client, err := listener.ReadFromUDP(data[:])
		if err != nil {
			log.Println(err)
			break
		}
		fmt.Println(client, string(data[:n]))
		// 3.回复消息
		listener.WriteToUDP([]byte("recevied success!"), client)
	}
}

三、客户端

func main() {
	// 1.连接获取socket套接字
	conn, err := net.DialUDP("udp", nil, &net.UDPAddr{
		IP:   net.IPv4(172, 31, 50, 249),
		Port: 9091,
	})
	if err != nil {
		log.Fatal(err)
	}
	defer conn.Close()
	// 2.发送消息
	conn.Write([]byte("jstang"))
	// 3.接收消息
	data := make([]byte, 1024)
	conn.ReadFromUDP(data)
	fmt.Println(string(data))
}

标签:UDP,err,byte,Golang,接字,net,data,连接,客户端
来源: https://blog.csdn.net/qq_38900565/article/details/115439284

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有