温馨提示×

Go语言在Linux环境下的网络编程

小樊
48
2025-08-03 07:58:02
栏目: 编程语言

在Linux环境下使用Go语言进行网络编程,你需要了解Go语言的基本网络库net。这个库提供了一系列用于实现TCP、UDP、UNIX域套接字等网络功能的接口。以下是一些基本的网络编程示例:

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	}	} } 

UDP服务器

package main import ( "fmt" "net" ) func main() {	address, err := net.ResolveUDPAddr("udp", ":8080") if err != nil {	fmt.Println("Error resolving UDP address:", err) return	}	conn, err := net.ListenUDP("udp", address) if err != nil {	fmt.Println("Error listening on UDP:", err) return	} defer conn.Close()	fmt.Println("Listening on :8080")	buffer := make([]byte, 1024) for {	n, addr, err := conn.ReadFromUDP(buffer) if err != nil {	fmt.Println("Error reading from UDP:", err) continue	}	fmt.Printf("Received message from %s: %s ", addr.String(), string(buffer[:n]))	conn.WriteToUDP([]byte("Message received "), addr)	} } 

UDP客户端

package main import ( "bufio" "fmt" "net" "os" ) func main() {	address, err := net.ResolveUDPAddr("udp", "localhost:8080") if err != nil {	fmt.Println("Error resolving UDP address:", err) return	}	conn, err := net.DialUDP("udp", nil, address) if err != nil {	fmt.Println("Error dialing UDP:", err) return	} defer conn.Close() go func() {	buffer := make([]byte, 1024) for {	n, _, err := conn.ReadFromUDP(buffer) if err != nil {	fmt.Println("Error reading from UDP:", err) return	}	fmt.Printf("Received message: %s ", string(buffer[:n]))	}	}()	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	}	} } 

这些示例展示了如何在Linux上使用Golang进行基本的网络编程。你可以根据自己的需求修改和扩展这些示例。

0