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

您的位置: 首页 > 文章列表 > 编程开发 > ubuntu下golang网络编程如何实现

ubuntu下golang网络编程如何实现

  发布于2026-07-08 阅读(0)

扫一扫,手机访问

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

ubuntu下golang网络编程如何实现

  1. 先把Go环境装好
    如果机器上还没装Go,去官网(https://golang.org/dl/)下载对应Ubuntu版本就行。这一步没什么魔法可说 ——下载->解压->配好PATH与环境变量 GOPATH一条龙,然后命令行里验证一下 go version就算ok了。


  2. 在你的 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)
        }
    }
  3. 跑起来检验成果
    打开一个终端,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 等所有主流协议的使用方式。

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

热门关注