发布于2026-07-01 阅读(0)
扫一扫,手机访问
想在CentOS上玩Golang网络编程?准备工作其实不复杂,把流程理清楚就行。下面从环境搭建到跑第一个TCP服务器,一步步拆开来看。

CentOS上装Go有两种常见方式:直接去官网下载Linux安装包,或者用包管理器(yum/dnf)搞定。这里推荐手动安装,版本可控,也更容易踩对点。
先用wget拉取压缩包,比如1.17.6版本(实际使用时建议换成最新稳定版):
wget https://golang.org/dl/go1.17.6.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.17.6.linux-amd64.tar.gz
解压完别忘了配环境变量,不然终端找不到go命令:
echo "export PATH=$PATH:/usr/local/go/bin" >> ~/.bashrc
source ~/.bashrc
顺手验证一下:
go version
能看到版本号,说明安装成功。
新建一个目录当作项目根目录,名字随你定,比如my-golang-network-project:
mkdir my-golang-network-project
cd my-golang-network-project
然后创建一个Go源文件,比如main.go,用vim、nano或者其他编辑器都行。
下面这段示例是一个最简单的TCP服务器——监听8080端口,收到客户端消息后原样回复一句“Message received”。它用到了Go的net包和goroutine,每个连接独立处理:
package main
import (
"bufio"
"fmt"
"net"
)
func main() {
listener, err := net.Listen("tcp", ":8080")
if err != nil {
fmt.Println("Error listening:", err.Error())
return
}
defer listener.Close()
fmt.Println("Listening on :8080")
for {
conn, err := listener.Accept()
if err != nil {
fmt.Println("Error accepting:", err.Error())
continue
}
go handleRequest(conn)
}
}
func handleRequest(conn net.Conn) {
defer conn.Close()
reader := bufio.NewReader(conn)
for {
message, err := reader.ReadString('\n')
if err != nil {
fmt.Println("Error reading:", err.Error())
return
}
fmt.Print("Received message: ", string(message))
_, err = conn.Write([]byte("Message received\n"))
if err != nil {
fmt.Println("Error writing:", err.Error())
return
}
}
}
这段代码的逻辑很直白:先启动监听,进入无限循环等待连接;每来一个连接,就开一个goroutine去处理读写。处理函数里用bufio.Reader按行读取,直到连接断开。
在项目目录下直接执行:
go run main.go
终端会输出“Listening on :8080”,然后用telnet或者nc连上去试试:
telnet 127.0.0.1 8080
随便发条消息,回车,应该能看到服务器回复“Message received”。
当然,这只是一个入门级的例子。Go的net标准库还提供了HTTP、UDP、WebSocket等更高级的封装,gRPC也有成熟的第三方库。想往深走的话,可以从这个起点出发,慢慢把并发、超时、协议解析这些技能点补上。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8