Go基础知识-TCP/UDP
2022/3/4 23:21:23
本文主要是介绍Go基础知识-TCP/UDP,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1.网络编程:物理层->数据链路层->网络层->传输层->应用层
2.Socket是应用层与TCP/IP协议族通信的中间软件抽象层
3.TCP编程:net包里面,并且粘包的问题需要注意
服务端处理流程:
1.监听端口
2.接收客户端请求建立链接
3.创建goroutine处理链接
客户端处理流程:
1.建立与服务端连接 2. 收发数据 3.关闭连接
案例:
服务端:
func main(){ //1.监听端口:Listen listen,err := net.Listen("tcp","127.0.0.1:4567") if err != nil{ fmt.Println("listen error:",err) return } defer listen.Close() fmt.Println("listen success") //接收客户端请求建立连接 Accept for{ //建立连接 conn,err := listen.Accept() if err != nil{ fmt.Println("Accept error:",err) continue } fmt.Println("收到客户端连接进来=",conn.RemoteAddr().String()) //接收数据 go func(_conn net.Conn) { defer _conn.Close() for{ reader := bufio.NewReader(_conn) var buf [128]byte n,err := reader.Read(buf[:]) if err != nil{ fmt.Println("read err:",err) break } data := string(buf[:n]) fmt.Println("receive data=",data) //给客户端发一条 _conn.Write([]byte("已经收到这条消息")) } }(conn) } } //使用tcp工具发送 //结果如下:
listen success
收到客户端连接进来= 127.0.0.1:55559
receive data= 你哈啊
read err: read tcp 127.0.0.1:4567->127.0.0.1:55559: wsarecv: An existing connection was forcibly closed by the remote host.
客户端:
func main(){ //1.建立与服务端连接 2. 收发数据 3.关闭连接 _conn,err := net.Dial("tcp","127.0.0.1:4567") if err != nil{ fmt.Println("conn to server error:",err) return } defer _conn.Close() //2. 收发数据 Accept for i:=0;i<10;i++{ //发送数据 _,err = _conn.Write([]byte("你好server")) if err != nil{ fmt.Println("send msg err=",err) return } //接收服务端数据 var buf [128]byte n,err := _conn.Read(buf[:]) if err != nil{ fmt.Println("read server content error",err) return } fmt.Println("server msg=",string(buf[:n])) } }
4.UDP编程:换个函数
这篇关于Go基础知识-TCP/UDP的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-12Cargo deny安装指路
- 2024-11-02MongoDB项目实战:从入门到初级应用
- 2024-11-01随时随地一键转录,Google Cloud 新模型 Chirp 2 让语音识别更上一层楼
- 2024-10-25Google Cloud动手实验详解:如何在Cloud Run上开发无服务器应用
- 2024-10-24AI ?先驱齐聚 BAAI 2024,发布大规模语言、多模态、具身、生物计算以及 FlagOpen 2.0 等 AI 模型创新成果。
- 2024-10-20goland工具下,如修改一个项目的标准库SDK的版本-icode9专业技术文章分享
- 2024-10-17Go学习:初学者的简单教程
- 2024-10-17Go学习:新手入门完全指南
- 2024-10-17Golang学习:初学者入门教程
- 2024-10-17Golang学习:新手入门教程