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

Go语言的网络编程基础主要依赖于标准库中的 net 包,它封装了底层的网络通信细节,提供了简单而强大的接口来处理TCP、UDP、HTTP等协议。其中,TCP作为面向连接、可靠的传输层协议,是构建稳定网络服务的常用选择。
使用 net 包建立TCP连接,核心涉及两个角色:服务端监听连接请求,客户端发起连接。下面通过一个简单的回声(echo)示例展示如何使用 net 包实现基本的TCP通信。
服务端通过 net.Listen 监听指定地址和端口,等待客户端连接。每当有新连接到来,使用 listener.Accept 接受连接并启动一个 goroutine 处理数据读写,以实现并发处理多个客户端。
示例代码:
立即学习“go语言免费学习笔记(深入)”;
package main
import (
"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("收到消息: %s\n", msg)
// 回显给客户端
conn.Write([]byte("echo: " + msg + "\n"))
}
}
客户端使用 net.Dial 连接到服务端,获取连接对象后即可发送和接收数据。通过标准输入读取用户输入,并将内容发送给服务端,同时读取服务端返回的数据。
示例代码:
立即学习“go语言免费学习笔记(深入)”;
package main
import (
"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"))
}
}
先启动服务端:
go run server.go
再打开另一个终端运行客户端:
go run client.go
在客户端输入任意文本,服务端会打印并回显,客户端也会收到回显内容。
基本上就这些。Go 的 net 包设计简洁,配合 goroutine 能轻松实现高性能网络服务。理解 TCP 连接的建立与数据流处理是网络编程的基础。不复杂但容易忽略。
以上就是Golang网络编程基础是什么 使用net包建立TCP连接示例的详细内容,更多请关注php中文网其它相关文章!
编程怎么学习?编程怎么入门?编程在哪学?编程怎么学才快?不用担心,这里为大家提供了编程速学教程(入门课程),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号