发布于2026-07-08 阅读(0)
扫一扫,手机访问
关于在Ubuntu下用Go语言做网络编程这件事,其实核心流程并不复杂,但很多初学者容易在环境配置和基础代码结构上卡一下。下面直接上步骤,配合一个能跑起来的TCP示例,你应该能很快上手。

先把Go环境装好。
如果机器上还没装Go,去官网(https://golang.org/dl/)下载对应Ubuntu版本就行。这一步没什么魔法可说 ——下载->解压->配好PATH与环境变量 GOPATH一条龙,然后命令行里验证一下 go version就算ok了。
。
在你的 workspace 里创建一个文件夹给它个好记的名字就行,比如 go-network-programming ——然后在里面放一个叫 main.go
。
打开 main.go,下面是一段完整的 TCP 服务器 + 客户端实现,别看代码量不多,但已经涵盖了监听、连接处理与消息收发最基础的套路。
TCP 服务器(main.go):
package main
import (
"bufio"
"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("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)
message, err := reader.ReadString('\n')
if err != nil {
fmt.Println("Error reading:", err.Error())
return
}
fmt.Print("Received message: ", string(message))
}
TCP 客户端(client.go):
package main
import (
"bufio"
"fmt"
"net"
"os"
"time"
)
func main() {
conn, err := net.Dial("tcp", "localhost:8080")
if err != nil {
fmt.Println("Error connecting:", err.Error())
os.Exit(1)
}
defer conn.Close()
go func() {
for {
time.Sleep(time.Second)
fmt.Fprintf(conn, "Hello from client\n")
}
}()
reader := bufio.NewReader(os.Stdin)
for {
message, _ := reader.ReadString('\n')
fmt.Fprintf(conn, message)
}
}
跑起来检验成果。
打开一个终端,cd 到 main.gogo run main.go 启动服务器。然后在另一个终端同样的位置,执行 go run client.go 启动客户端。如果一切正常,你会看到服务器终端里输出客户端发来的消息 ——那个 Hello from client 以及你手动输入的任何内容。
这个例子虽然简单,但它把 Go 网络编程的核心骨架——监听、Accept、goroutine 处理连接、Dial连接——全部串起来了。你完全可以基于这套框架去扩展自己的功能,比如加上超时控制、协议解析、多客户端广播等等。要了解更多底层细节,可以直接翻 Go 官方 net 包的文档(https://golang.org/pkg/net/),那上面涵盖了 TCP、UDP、HTTP 等所有主流协议的使用方式。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8