商城首页欢迎来到中国正版软件门户

您的位置:首页 >Golang在Linux上的网络编程如何进行

Golang在Linux上的网络编程如何进行

  发布于2026-05-02 阅读(0)

扫一扫,手机访问

想在Linux环境下用Go语言玩转网络编程?这事儿其实没想象中那么复杂。Go标准库自带的网络能力相当扎实,从底层的TCP、UDP到上层的HTTP,都给你封装好了现成的工具。下面咱们就一步步来,看看怎么把这些功能用起来。

Golang在Linux上的网络编程如何进行

1. 导入必要的包

第一步,先把“工具箱”打开。Go的网络编程核心离不开net这个包,如果要做Web服务,那net/http也得请进来。

package main

import (
    "fmt"
    "net"
    "net/http"
)

2. TCP服务器

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)
    }
}

3. UDP服务器

和面向连接的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)
    }
}

4. HTTP服务器

到了应用层,用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())
    }
}

5. 编译和运行

代码写好了,怎么让它跑起来?在Linux终端里,进入你的项目目录,两条命令就够了。第一条编译,第二条运行,干净利落。

go build -o myserver
./myserver

6. 测试

服务器跑起来了,效果如何?总得验证一下。对于TCP服务,可以用经典的telnet工具连接发送数据;对于HTTP服务,curl命令或者直接浏览器访问都是不错的选择。

telnet localhost 8080
curl http://localhost:8082/

走完这几个步骤,你在Linux上用Go进行网络编程的基础就算打牢了。当然,真正的项目远比示例复杂,但万变不离其宗,理解了这些核心模式,再根据具体需求去扩展和深化,路子就通了。

本文转载于:https://www.yisu.com/ask/26870050.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注