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

您的位置: 首页 > 文章列表 > 编程开发 > CentOS上Golang网络编程怎样实现

CentOS上Golang网络编程怎样实现

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

扫一扫,手机访问

想在CentOS上玩Golang网络编程?准备工作其实不复杂,把流程理清楚就行。下面从环境搭建到跑第一个TCP服务器,一步步拆开来看。

CentOS上Golang网络编程怎样实现

1. 安装Golang

CentOS上装Go有两种常见方式:直接去官网下载Linux安装包,或者用包管理器(yum/dnf)搞定。这里推荐手动安装,版本可控,也更容易踩对点。

先用wget拉取压缩包,比如1.17.6版本(实际使用时建议换成最新稳定版):

wget https://golang.org/dl/go1.17.6.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.17.6.linux-amd64.tar.gz

解压完别忘了配环境变量,不然终端找不到go命令:

echo "export PATH=$PATH:/usr/local/go/bin" >> ~/.bashrc
source ~/.bashrc

顺手验证一下:

go version

能看到版本号,说明安装成功。

2. 创建一个Go项目

新建一个目录当作项目根目录,名字随你定,比如my-golang-network-project

mkdir my-golang-network-project
cd my-golang-network-project

然后创建一个Go源文件,比如main.go,用vim、nano或者其他编辑器都行。

3. 编写网络编程代码

下面这段示例是一个最简单的TCP服务器——监听8080端口,收到客户端消息后原样回复一句“Message received”。它用到了Go的net包和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:", 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: ", string(message))
        _, err = conn.Write([]byte("Message received\n"))
        if err != nil {
            fmt.Println("Error writing:", err.Error())
            return
        }
    }
}

这段代码的逻辑很直白:先启动监听,进入无限循环等待连接;每来一个连接,就开一个goroutine去处理读写。处理函数里用bufio.Reader按行读取,直到连接断开。

4. 运行你的Go程序

在项目目录下直接执行:

go run main.go

终端会输出“Listening on :8080”,然后用telnet或者nc连上去试试:

telnet 127.0.0.1 8080

随便发条消息,回车,应该能看到服务器回复“Message received”。

当然,这只是一个入门级的例子。Go的net标准库还提供了HTTP、UDP、WebSocket等更高级的封装,gRPC也有成熟的第三方库。想往深走的话,可以从这个起点出发,慢慢把并发、超时、协议解析这些技能点补上。

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

产品推荐

热门关注