一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

Golang在Linux中的网络编程怎样实现

时间:2026-06-09 08:25:53 编辑:袖梨 来源:一聚教程网

在Linux中,使用Golang进行网络编程主要涉及到几个核心包,如"net"、“os"和"io”。以下是一个简单的TCP服务器和客户端的示例,展示了如何在Linux中使用Golang进行网络编程。

Golang在Linux中的网络编程如何实现

  1. TCP服务器:
package mainimport ("bufio""fmt""net""os")func main() {port := "8080"listener, err := net.Listen("tcp", ":"+port)if err != nil {fmt.Println("Error listening:", err.Error())os.Exit(1)}defer listener.Close()fmt.Println("Listening on port", port)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))conn.Write([]byte("Message receivedn"))}
  1. TCP客户端:
package mainimport ("bufio""fmt""net""os""strings")func main() {serverAddress := "127.0.0.1:8080"conn, err := net.Dial("tcp", serverAddress)if err != nil {fmt.Println("Error connecting:", err.Error())os.Exit(1)}defer conn.Close()fmt.Println("Connected to server")go func() {reader := bufio.NewReader(os.Stdin)for {fmt.Print("Enter message: ")text, _ := reader.ReadString('n')text = strings.TrimSpace(text)conn.Write([]byte(text + "n"))}}()buffer := make([]byte, 1024)for {bytesRead, err := conn.Read(buffer)if err != nil {fmt.Println("Error reading:", err.Error())return}fmt.Print("Received from server: ", string(buffer[:bytesRead]))}}

在这个例子中,我们创建了一个简单的TCP服务器,监听8080端口。当客户端连接时,服务器会接收客户端发送的消息,并将其打印到控制台。然后,服务器会向客户端发送一条确认消息。

客户端连接到服务器,并允许用户输入消息。用户输入的消息会被发送到服务器,然后客户端会等待并接收服务器的响应。

要运行这个示例,请将服务器代码保存为server.go,将客户端代码保存为client.go。首先运行服务器:

go run server.go

然后在另一个终端中运行客户端:

go run client.go

现在,您可以在客户端输入消息,它们将被发送到服务器并显示在服务器端。服务器也会向客户端发送确认消息。

热门栏目