linux

Linux下Golang网络编程如何实现

小樊
52
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
看了该问题的人还看了