发布于2026-07-12 阅读(0)
扫一扫,手机访问
在Debian上折腾Golang网络编程,其实比想象中要丝滑得多。先说说几个关键点:环境搭对、套路摸清,剩下的就是看你自己想怎么玩。下面把整个流程拆开来讲,每一步都配了代码示例,跟着走就能跑起来。

安装Golang
如果系统里还没有Go,一条命令就能搞定:
sudo apt-get update
sudo apt-get install golang-go
装完之后建议验证一下版本,确保没装错。
设置环境变量
GOPATH和GOROOT这两个东西,新手容易迷糊。简单说,GOROOT是Go的安装目录,系统通常自动配好;GOPATH是你自己放项目和第三方包的地方。推荐在 ~/.bashrc 或 ~/.profile 里加上:
export GOROOT=/usr/lib/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
然后执行 source ~/.bashrc 让它生效。这一步做好了,后面所有操作都会顺畅很多。
创建项目目录
在 $GOPATH 下新建一个文件夹,比如就叫 network-programming,然后在里面创建 main.go 文件。项目结构越简单越好,先把跑通放在第一位。
写一个TCP服务器
网络编程最常见的入门例子就是TCP服务端。下面这段代码监听8080端口,每来一个客户端就开一个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 connection:", 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: ", message)
_, err = conn.Write([]byte("Message received\n"))
if err != nil {
fmt.Println("Error writing:", err.Error())
return
}
}
}
代码逻辑很直白:net.Listen 启动监听,Accept 阻塞等待连接,一旦连上就用 go 启动一个新协程去读写数据。主循环继续等待下一个客户端——这就是Go并发模型最优雅的地方。
运行程序
在项目目录下执行:
go run main.go
如果一切正常,终端会输出 Listening on :8080,然后程序就挂在那里等着客户端来敲门了。
测试连接
打开另一个终端,用 telnet 或者 nc 连接:
telnet localhost 8080
连接成功后,输入一行文本按回车,你会立刻看到服务器返回 Message received。如果在服务端终端上看,还能看到打印出来的原始消息。
这整套流程跑下来,你就完成了Debian上Golang网络编程的“最小闭环”。后续不管是改成HTTP服务、WebSocket,还是自己造轮子做自定义协议,都可以在这个基础上不断加码。关键在于先把环境理顺、把基本套路跑通——剩下的,就交给你的想象力了。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8