
本文档旨在引导读者使用 Go 语言构建一个基本的 TCP 客户端-服务器应用。我们将介绍服务器端监听端口、客户端连接服务器,以及简单的数据交互。通过本文,读者将了解 Go 语言网络编程的基础知识,并能搭建起一个简单的客户端-服务器通信框架。
服务器端的主要职责是监听指定的端口,接受客户端的连接请求,并处理客户端发送的数据。以下是一个简单的 TCP 服务器端示例:
package main
import (
"fmt"
"net"
"os"
)
func main() {
listener, err := net.Listen("tcp", ":8080")
if err != nil {
fmt.Println("Error listening:", err.Error())
os.Exit(1)
}
defer listener.Close()
fmt.Println("Server listening on :8080")
for {
conn, err := listener.Accept()
if err != nil {
fmt.Println("Error accepting: ", err.Error())
continue
}
fmt.Println("Client connected")
go handleConnection(conn) // 使用 goroutine 处理每个连接
}
}
func handleConnection(conn net.Conn) {
defer conn.Close()
buffer := make([]byte, 1024)
for {
n, err := conn.Read(buffer)
if err != nil {
fmt.Println("Error reading:", err.Error())
return
}
fmt.Printf("Received from client: %s\n", string(buffer[:n]))
_, err = conn.Write([]byte("Server received: " + string(buffer[:n])))
if err != nil {
fmt.Println("Error writing:", err.Error())
return
}
}
}代码解释:
注意事项:
客户端的主要职责是连接服务器,发送数据,并接收服务器的响应。以下是一个简单的 TCP 客户端示例:
package main
import (
"bufio"
"fmt"
"net"
"os"
"strings"
)
func main() {
conn, err := net.Dial("tcp", "localhost:8080")
if err != nil {
fmt.Println("Error connecting:", err.Error())
os.Exit(1)
}
defer conn.Close()
fmt.Println("Connected to server")
reader := bufio.NewReader(os.Stdin)
for {
fmt.Print("Enter text: ")
line, _ := reader.ReadString('\n')
line = strings.TrimRight(line, "\r\n")
_, err := conn.Write([]byte(line + "\n"))
if err != nil {
fmt.Println("Error writing:", err.Error())
break
}
buffer := make([]byte, 1024)
n, err := conn.Read(buffer)
if err != nil {
fmt.Println("Error reading:", err.Error())
break
}
fmt.Printf("Received from server: %s\n", string(buffer[:n]))
}
}代码解释:
注意事项:
本文介绍了如何使用 Go 语言构建一个简单的 TCP 客户端-服务器应用。通过这个示例,读者可以了解 Go 语言网络编程的基本概念和步骤。 在实际应用中,可以根据具体需求扩展这个框架,例如添加更复杂的数据处理逻辑、实现身份验证和授权等功能。 记住,并发处理和错误处理是构建可靠网络应用的关键。
以上就是使用 Go 语言构建简单的 TCP 客户端-服务器应用的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号