您的位置:首页 >Golang在Linux上的网络编程如何进行
发布于2026-05-02 阅读(0)
扫一扫,手机访问
想在Linux环境下用Go语言玩转网络编程?这事儿其实没想象中那么复杂。Go标准库自带的网络能力相当扎实,从底层的TCP、UDP到上层的HTTP,都给你封装好了现成的工具。下面咱们就一步步来,看看怎么把这些功能用起来。

第一步,先把“工具箱”打开。Go的网络编程核心离不开net这个包,如果要做Web服务,那net/http也得请进来。
package main
import (
"fmt"
"net"
"net/http"
)
TCP是可靠连接的代表,搭建一个服务端来监听客户端请求,是网络编程的经典入门课。下面的代码展示了一个回声服务器的基本骨架:监听端口、接受连接、读取数据并回复。
package main
import (
"fmt"
"net"
)
func handleConnection(conn net.Conn) {
defer conn.Close()
buffer := make([]byte, 1024)
n, err := conn.Read(buffer)
if err != nil {
fmt.Println("Error reading:", err.Error())
return
}
fmt.Println("Received message:", string(buffer[:n]))
conn.Write([]byte("Message received"))
}
func main() {
listener, err := net.Listen("tcp", ":8080")
if err != nil {
fmt.Println("Error starting TCP server:", err.Error())
return
}
defer listener.Close()
fmt.Println("TCP server listening on port 8080")
for {
conn, err := listener.Accept()
if err != nil {
fmt.Println("Error accepting connection:", err.Error())
continue
}
go handleConnection(conn)
}
}
和面向连接的TCP不同,UDP走的是“无连接”路线,速度快,适合对实时性要求高、允许少量丢包的场景。它的服务器模式是绑定一个端口,然后直接读写数据包。
package main
import (
"fmt"
"net"
)
func handleUDPConn(conn *net.UDPConn) {
buffer := make([]byte, 1024)
n, addr, err := conn.ReadFromUDP(buffer)
if err != nil {
fmt.Println("Error reading UDP packet:", err.Error())
return
}
fmt.Printf("Received message from %s: %s\n", addr.String(), string(buffer[:n]))
conn.WriteToUDP([]byte("Message received"), addr)
}
func main() {
addr, err := net.ResolveUDPAddr("udp", ":8081")
if err != nil {
fmt.Println("Error resolving UDP address:", err.Error())
return
}
conn, err := net.ListenUDP("udp", addr)
if err != nil {
fmt.Println("Error starting UDP server:", err.Error())
return
}
defer conn.Close()
fmt.Println("UDP server listening on port 8081")
for {
handleUDPConn(conn)
}
}
到了应用层,用Go写一个HTTP服务器简直可以说是“优雅”。几行代码,一个能处理请求、返回“Hello, World!”的Web服务就立起来了。
package main
import (
"fmt"
"net/http"
)
func helloHandler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello, World!")
}
func main() {
http.HandleFunc("/", helloHandler)
fmt.Println("Starting HTTP server on port 8082")
if err := http.ListenAndServe(":8082", nil); err != nil {
fmt.Println("Error starting HTTP server:", err.Error())
}
}
代码写好了,怎么让它跑起来?在Linux终端里,进入你的项目目录,两条命令就够了。第一条编译,第二条运行,干净利落。
go build -o myserver
./myserver
服务器跑起来了,效果如何?总得验证一下。对于TCP服务,可以用经典的telnet工具连接发送数据;对于HTTP服务,curl命令或者直接浏览器访问都是不错的选择。
telnet localhost 8080
curl http://localhost:8082/
走完这几个步骤,你在Linux上用Go进行网络编程的基础就算打牢了。当然,真正的项目远比示例复杂,但万变不离其宗,理解了这些核心模式,再根据具体需求去扩展和深化,路子就通了。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
9