centos

Golang在CentOS上的网络编程

小樊
44
2025-03-31 15:46:36
栏目: 编程语言

在CentOS上使用Golang进行网络编程,首先需要确保你的系统上已经安装了Golang环境。以下是安装Golang和进行网络编程的步骤:

安装Golang

  1. 下载并解压Golang安装包
wget https://golang.google.cn/dl/go1.18.linux-amd64.tar.gz
tar -xvf go1.18.linux-amd64.tar.gz -C /usr/local/
  1. 设置环境变量

编辑~/.bashrc文件,添加以下内容:

export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

然后执行以下命令使环境变量生效:

source ~/.bashrc

输入go version查看是否安装成功。

Golang网络编程

Golang的网络编程主要使用net包来实现,该包提供了一组基本的网络功能,包括TCP和UDP套接字、IP地址和端口号的处理,以及一些高级特性,如非阻塞I/O和HTTP客户端库。

TCP通信示例

TCP服务端

package main

import (
	"fmt"
	"net"
)

func main() {
	// 监听端口
	listener, err := net.Listen("tcp", "127.0.0.1:30000")
	if err != nil {
		fmt.Println("listen failed, err:", err)
		return
	}
	defer listener.Close()

	for {
		// 建立连接
		conn, err := listener.Accept()
		if err != nil {
			fmt.Println("accept failed, err:", err)
			continue
		}
		// 创建goroutine处理连接
		go processConn(conn)
	}
}

// 与客户端通信
func processConn(conn net.Conn) {
	defer conn.Close()
	tmp := make([]byte, 1024)
	for {
		n, err := conn.Read(tmp)
		if err != nil {
			fmt.Println("read from client failed, err:", err)
			break
		}
		recvStr := string(tmp[:n])
		fmt.Println(recvStr)
	}
}

TCP客户端

package main

import (
	"bufio"
	"fmt"
	"net"
	"os"
)

func main() {
	// 与server建立连接
	conn, err := net.Dial("tcp", "127.0.0.1:8080")
	if err != nil {
		fmt.Println("dial failed, err:", err)
		return
	}
	defer conn.Close()

	// 发送数据
	for {
		fmt.Print("请输入发送内容: ")
		reader := bufio.NewReader(os.Stdin)
		msg, _ := reader.ReadString('\n')
		if msg == "quit" {
			break
		}
		conn.Write([]byte(msg))
	}
}

解决TCP通信中的常见问题

以上就是在CentOS上使用Golang进行网络编程的基本步骤和示例代码。你可以根据自己的需求进行进一步的定制和扩展。

0
看了该问题的人还看了