Golang网络编程:TCP/UDP编程实例 Golang是一个非常流行的编程语言,特别适合于网络编程方面的应用。在本篇文章中,我们将会涵盖TCP和UDP网络编程的实例。 TCP编程实例 TCP是一种面向连接的协议,它提供可靠的数据传输机制。下面是一个简单的TCP服务器和客户端程序。 服务器: ```go package main import ( "fmt" "net" ) func main() { ln, err := net.Listen("tcp", ":8080") if err != nil { fmt.Println(err) return } for { conn, err := ln.Accept() if err != nil { continue } go handleConnection(conn) } } func handleConnection(conn net.Conn) { buf := make([]byte, 1024) _, err := conn.Read(buf) if err != nil { fmt.Println("Error reading:", err.Error()) } fmt.Println("Message received:", string(buf)) conn.Close() } ``` 客户端: ```go package main import ( "fmt" "net" ) func main() { conn, err := net.Dial("tcp", "127.0.0.1:8080") if err != nil { fmt.Println(err) return } fmt.Fprintf(conn, "Hello, server") conn.Close() } ``` 首先服务器程序使用net.Listen()函数监听一个TCP端口,等待客户端的连接。然后用ln.Accept()函数接受连接并在一个新的goroutine中处理连接,然后在服务器上打印收到的消息。 客户端程序使用net.Dial()函数连接到服务器。然后使用fmt.Fprintf()函数向服务器发送一条消息,在此之后关闭连接。 UDP编程实例 UDP是一种不可靠的协议,它提供了无连接的数据传输机制。下面是一个简单的UDP服务器和客户端程序。 服务器: ```go package main import ( "fmt" "net" ) func main() { pc, err := net.ListenPacket("udp", ":8080") if err != nil { fmt.Println(err) return } defer pc.Close() buf := make([]byte, 1024) for { _, addr, err := pc.ReadFrom(buf) if err != nil { fmt.Println(err) continue } fmt.Println("Message received:", string(buf)) _, err = pc.WriteTo(buf, addr) if err != nil { fmt.Println(err) continue } } } ``` 客户端: ```go package main import ( "fmt" "net" ) func main() { conn, err := net.Dial("udp", "127.0.0.1:8080") if err != nil { fmt.Println(err) return } fmt.Fprintf(conn, "Hello, server") buf := make([]byte, 1024) _, err = conn.Read(buf) if err != nil { fmt.Println(err) return } fmt.Println("Message received:", string(buf)) conn.Close() } ``` 首先UDP服务器程序使用net.ListenPacket()函数监听一个UDP端口,等待客户端的连接。然后使用pc.ReadFrom()函数从客户端接受消息,并在服务器上打印收到的消息。接着使用pc.WriteTo()函数给客户端发送一个消息。 客户端程序使用net.Dial()函数连接到服务器。然后使用fmt.Fprintf()函数向服务器发送一条消息。接着使用conn.Read()函数从服务器接收消息,并在客户端上打印收到的消息。 总结 本文中我们涵盖了TCP和UDP网络编程的实例,这些实例为初学者提供了一个简单而有用的入门介绍。Golang的网络编程是一件非常有趣和有用的事情,因为它可以帮助我们构建各种各样的网络应用。