linux

Go语言在Linux下的网络编程技巧

小樊
37
2025-08-05 08:21:01
栏目: 编程语言

在Linux下使用Go语言进行网络编程,你可以利用Go语言丰富的标准库net来实现各种网络功能,包括TCP、UDP、UNIX域套接字等。以下是一些基本的网络编程技巧和示例代码:

安装Go环境

首先,你需要在Linux系统上安装Go语言环境。可以从Go官方网站下载适合Linux的二进制文件,然后解压并设置环境变量。

设置环境变量

编辑~/.bashrc文件,添加Go语言的路径:

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

保存并关闭文件后,运行source ~/.bashrc使配置文件生效。

编写TCP服务器和客户端

TCP服务器示例

package main

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

func main() {
	listener, err := net.Listen("tcp", ":8080")
	if err != nil {
		fmt.Println("Error listening:", err)
		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)
			continue
		}
		go handleConnection(conn)
	}
}

func handleConnection(conn net.Conn) {
	defer conn.Close()
	reader := bufio.NewReader(conn)
	for {
		message, err := reader.ReadString('\n')
		if err != nil {
			fmt.Println("Error reading:", err)
			return
		}
		fmt.Print("Received message: ", message)
		conn.Write([]byte("Message received\n"))
	}
}

TCP客户端示例

package main

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

func main() {
	conn, err := net.Dial("tcp", "localhost:8080")
	if err != nil {
		fmt.Println("Error connecting:", err)
		os.Exit(1)
	}
	defer conn.Close()

	go func() {
		reader := bufio.NewReader(conn)
		for {
			message, err := reader.ReadString('\n')
			if err != nil {
				fmt.Println("Error reading:", err)
				return
			}
			fmt.Print("Received message: ", message)
		}
	}()

	reader := bufio.NewReader(os.Stdin)
	for {
		fmt.Print("Enter message: ")
		message, _ := reader.ReadString('\n')
		_, err := conn.Write([]byte(message))
		if err != nil {
			fmt.Println("Error sending message:", err)
			return
		}
	}
}

编译和运行

在终端中进入你的项目目录,运行以下命令来编译你的Go程序:

go build

这将生成一个可执行文件,文件名与你的Go语言源代码文件的包名相同。你可以通过运行这个可执行文件来查看程序输出:

./your_executable_file

扩展技巧

通过以上步骤和示例代码,你可以在Linux下使用Go语言进行基本的网络编程。你可以根据自己的需求修改和扩展这些示例,以实现更复杂的网络应用。

0
看了该问题的人还看了