【GO】入门级网络通信,一看就懂

【GO】入门级网络通信,一看就懂,第1张

概述网络通信1. UDP解释简介个人简单理解UDP1-1 UDP写服务端1-2 UDP写客户端1-3 运行客户端和服务端的代码1-4 简单说明打印的数据来源2. 发起HTTP-GET请求3. 发起HTTP-POST请求博主微信欢迎交流1. UDP解释简介UDP(User Datagram Protocol),用户数据报协议,是OSI(Open System Interconnection,开放式...

网络通信 1. UDP解释简介个人简单理解UDP1-1 UDP写服务端1-2 UDP写客户端1-3 运行客户端和服务端的代码1-4 简单说明打印的数据来源@L_301_7@3. 发起HTTP-POST请求博主微信欢迎交流

1. UDP解释 简介

UDP(User Datagram Protocol),用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范。UDP提供了无连接通信,且不对传送数据包进行可靠性保证,适合于一次传输少量数据,UDP传输的可靠性由应用层负责。

个人简单理解UDP 相对于TCP会丢失数据速度快应用于视频等数据可以包容丢失的情况1-1 UDP写服务端

看注释,不需要解析

package mainimport (	"fmt"	"net"	"os")func HandleError(err error, when string) {	if err != nil {		fmt.Println("错误地址,err", when, err)		// 非正常退出,正常退出为0		os.Exit(0)	}}func main() {	// 解析得到UDP地址 返回指针	udpAddr, err := net.ResolveUDPAddr("udp", "127.0.0.1:8888")	HandleError(err, "ResolveUDPAddr")	// 在UDP地址上建立UDP监听,得到连接  传入指针类型	udpConn, err := net.ListenUDP("udp", udpAddr)	HandleError(err, "ListenUDP")	buffer := make([]byte, 1024)	// 从连接中读入内容,丢入缓冲区	n, remoteAddr, err := udpConn.ReadFromUDP(buffer)	HandleError(err, "udpConn")	fmt.Printf("读到来自%v的内容:%s", string(buffer[:n]))	udpConn.WritetoUDP([]byte("朕以阅"), remoteAddr)}
1-2 UDP写客户端
package mainimport (	"fmt"	"net"	"os")func handleError(err error,正常退出为0		os.Exit(0)	}}func main() {	// 拨号请求连接	conn, e := net.Dial("udp", "127.0.0.1:8888")	handleError(e, "Dial")	defer conn.Close()	// 向连接中写出信息	n, err := conn.Write([]byte("咔咔手赚网地址:fangkang.top"))	handleError(err, "Write")	fmt.Println("写出字节数", n)	// 创建缓冲区	buffer := make([]byte, 1024)	n, err = conn.Read(buffer)	handleError(err, "conn.Read")	fmt.Println(string(buffer[:n]))}
1-3 运行客户端和服务端的代码

先跑服务端代码


然后执行客户端

1-4 简单说明打印的数据来源

2. 发起http-GET请求
package mainimport (	"fmt"	"io/IoUtil"	"net/http"	"os")func getError(err error,正常退出为0		os.Exit(0)	}}func main() {	url := "https://fangkang.top"	resp, err := http.Get(url)	getError(err, "http.Get")	// response属于io资源,用完需要关闭	defer resp.Body.Close()	// 获取body的内容	bytes, err := IoUtil.ReadAll(resp.Body)	getError(err, "IoUtil.ReadAll")	// 返回的是字节需要转为字符串	fmt.Println(string(bytes))}

3. 发起http-POST请求
package mainimport (	"fmt"	"io/IoUtil"	"net/http"	"os"	"strings")func postError(err error,正常退出为0		os.Exit(0)	}}func main() {	url := "https://www.fangkang.top/API/subjectByType"	resp, err := http.Post(		// 请求地址		url,		// 携带的数据类型		"application/x-www-form-urlencoded",		// 携带的参数		strings.NewReader("st_ID=1"))	postError(err, "http.Post")	// response属于io资源,用完需要关闭	defer resp.Body.Close()	// 获取body的内容	bytes, err := IoUtil.ReadAll(resp.Body)	postError(err, "IoUtil.ReadAll")	// 返回的是字节需要转为字符串	fmt.Println(string(bytes))}

博主微信欢迎交流

总结

以上是内存溢出为你收集整理的【GO】入门级网络通信,一看就懂全部内容,希望文章能够帮你解决【GO】入门级网络通信,一看就懂所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1252299.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存