温馨提示×

Linux下Golang网络编程如何实现

小樊
56
2025-08-21 14:16:04
栏目: 编程语言

在Linux下使用Go语言进行网络编程,你可以利用Go标准库中的"net"包来实现。以下是一个简单的TCP服务器和客户端的示例。

  1. TCP服务器:
package main import ( "bufio" "fmt" "net" "os" ) func main() { // 监听端口	listener, err := net.Listen("tcp", ":8080") if err != nil {	fmt.Println("Error listening:", err.Error())	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.Error()) 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 from connection:", err.Error()) break	}	fmt.Print("Received message: ", string(message)) // 向客户端发送响应	_, err = conn.Write([]byte("Message received\n")) if err != nil {	fmt.Println("Error writing to connection:", err.Error()) break	}	} } 
  1. TCP客户端:
package main import ( "bufio" "fmt" "net" "os" ) func main() { // 连接到服务器	conn, err := net.Dial("tcp", "localhost:8080") if err != nil {	fmt.Println("Error connecting to server:", err.Error())	os.Exit(1)	} defer conn.Close()	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 to server:", err.Error()) break	} // 读取服务器响应	response, err := bufio.NewReader(conn).ReadString('\n') if err != nil {	fmt.Println("Error reading response from server:", err.Error()) break	}	fmt.Print("Server response: ", response)	} } 

首先运行服务器程序,然后运行客户端程序。客户端可以连接到服务器并发送消息,服务器接收消息并发送响应。

这只是一个简单的示例,你可以根据需要扩展功能,例如实现并发处理多个客户端连接、使用UDP协议等。

0