Home >Backend Development >Golang >How does the Go language handle network I/O operations?
Go language, as an efficient and concise programming language, has its own unique advantages in handling network I/O operations. In the Go language, network I/O operations usually use Goroutine and Channel to achieve concurrency and communication between coroutines. Next, we will introduce in detail how the Go language handles network I/O operations and give specific code examples.
In Go language, network I/O operations mainly involve processing data transmission of TCP and UDP protocols. Go language provides standard libraries net
and net/http
to support network programming. Network I/O operations can be easily performed through these libraries.
package main import ( "fmt" "net" ) func handleConnection(conn net.Conn) { buffer := make([]byte, 1024) _, err := conn.Read(buffer) if err != nil { fmt.Println("Error reading:", err.Error()) return } fmt.Println("Received data:", string(buffer)) } func main() { listener, err := net.Listen("tcp", ":8080") if err != nil { fmt.Println("Error listening:", err.Error()) return } defer listener.Close() fmt.Println("Server is listening on :8080") for { conn, err := listener.Accept() if err != nil { fmt.Println("Error accepting:", err.Error()) break } go handleConnection(conn) } }
In the above code example, listen to the 8080 port through the net.Listen
method, and then main
Use listener.Accept
in the function to continuously accept TCP connections. Each time a connection is accepted, a Goroutine is started to process the connection data.
package main import ( "fmt" "net" ) func main() { conn, err := net.ListenPacket("udp", ":8080") if err != nil { fmt.Println("Error listening:", err.Error()) return } defer conn.Close() fmt.Println("Server is listening on :8080") for { buffer := make([]byte, 1024) n, addr, err := conn.ReadFrom(buffer) if err != nil { fmt.Println("Error reading:", err.Error()) break } fmt.Printf("Received data from %s: %s ", addr.String(), string(buffer[:n])) } }
In the above code example, listen to UDP port 8080 through the net.ListenPacket
method, and then ## The #main function continuously accepts UDP data packets in a loop, and the processing method is similar to TCP.
The above is the detailed content of How does the Go language handle network I/O operations?. For more information, please follow other related articles on the PHP Chinese website!