在CentOS上使用Golang进行网络编程,首先需要确保你的系统上已经安装了Golang环境。以下是安装Golang和进行网络编程的步骤:
wget https://golang.google.cn/dl/go1.18.linux-amd64.tar.gz
tar -xvf go1.18.linux-amd64.tar.gz -C /usr/local/
编辑~/.bashrc
文件,添加以下内容:
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
然后执行以下命令使环境变量生效:
source ~/.bashrc
输入go version
查看是否安装成功。
Golang的网络编程主要使用net
包来实现,该包提供了一组基本的网络功能,包括TCP和UDP套接字、IP地址和端口号的处理,以及一些高级特性,如非阻塞I/O和HTTP客户端库。
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))
}
}
\n
分隔不同的消息。以上就是在CentOS上使用Golang进行网络编程的基本步骤和示例代码。你可以根据自己的需求进行进一步的定制和扩展。
辰迅云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
推荐阅读: centos sftp虚拟用户配置