在Linux下使用Go语言进行网络编程,你可以利用Go标准库中的"net"包来实现。以下是一个简单的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 } } } 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协议等。