Go语言通过net包实现TCP通信,服务端使用net.Listen监听端口,Accept接收连接并用goroutine处理;客户端通过net.Dial发起连接,利用net.Conn进行读写。示例展示回声服务:服务端接收消息后回显,客户端发送输入并打印响应。关键点包括并发处理、连接管理和数据流控制,体现Go在网络编程中的简洁与高效。

Go语言的网络编程基础主要依赖于标准库中的 net 包,它封装了底层的网络通信细节,提供了简单而强大的接口来处理TCP、UDP、HTTP等协议。其中,TCP作为面向连接、可靠的传输层协议,是构建稳定网络服务的常用选择。
使用 net 包建立TCP连接,核心涉及两个角色:服务端监听连接请求,客户端发起连接。下面通过一个简单的回声(echo)示例展示如何使用 net 包实现基本的TCP通信。
1. TCP服务端实现
服务端通过 net.Listen 监听指定地址和端口,等待客户端连接。每当有新连接到来,使用 listener.Accept 接受连接并启动一个 goroutine 处理数据读写,以实现并发处理多个客户端。
示例代码:
立即学习“go语言免费学习笔记(深入)”;
package mainimport ( "bufio" "fmt" "net"")func main() { // 监听本地 8080 端口 listener, err := net.Listen("tcp", "localhost:8080") if err != nil { fmt.Println("监听失败:", err) return } defer listener.Close() fmt.Println("服务器启动,监听端口 8080...") for { // 等待客户端连接 conn, err := listener.Accept() if err != nil { fmt.Println("接受连接失败:", err) continue } // 启动协程处理该连接 go handleConnection(conn) }}// 处理客户端连接func handleConnection(conn net.Conn) { defer conn.Close() scanner := bufio.NewScanner(conn) for scanner.Scan() { msg := scanner.Text() fmt.Printf("收到消息: %sn", msg) // 回显给客户端 conn.Write([]byte("echo: " + msg + "n")) }}
2. TCP客户端实现
客户端使用 net.Dial 连接到服务端,获取连接对象后即可发送和接收数据。通过标准输入读取用户输入,并将内容发送给服务端,同时读取服务端返回的数据。
示例代码:
立即学习“go语言免费学习笔记(深入)”;
package mainimport ( "bufio" "fmt" "net" "os"")func main() { // 连接到服务端 conn, err := net.Dial("tcp", "localhost:8080") if err != nil { fmt.Println("连接失败:", err) return } defer conn.Close() fmt.Println("已连接到服务器") // 开启一个协程接收服务端消息 go func() { scanner := bufio.NewScanner(conn) for scanner.Scan() { fmt.Println("服务端:", scanner.Text()) } }() // 从标准输入读取用户输入并发送 input := bufio.NewScanner(os.Stdin) for input.Scan() { msg := input.Text() conn.Write([]byte(msg + "n")) }}
3. 运行方式
先启动服务端:
go run server.go
再打开另一个终端运行客户端:
go run client.go
在客户端输入任意文本,服务端会打印并回显,客户端也会收到回显内容。
4. 关键点说明
net.Listen(“tcp”, addr):创建一个 TCP 监听器,绑定到指定地址。 listener.Accept():阻塞等待新连接,返回一个 net.Conn 接口。 net.Dial(“tcp”, addr):主动连接到指定服务端。 net.Conn:代表一个网络连接,提供 Read 和 Write 方法进行数据传输。 使用 goroutine 实现并发处理,避免阻塞主线程。
基本上就这些。Go 的 net 包设计简洁,配合 goroutine 能轻松实现高性能网络服务。理解 TCP 连接的建立与数据流处理是网络编程的基础。不复杂但容易忽略。
以上就是Golang网络编程基础是什么 使用net包建立TCP连接示例的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1398122.html
微信扫一扫
支付宝扫一扫