Home > Article > Backend Development > What network protocols does Go language support?
Go language, as a powerful programming language, provides rich network programming support and can easily handle various network protocols. This article will introduce some common network protocols supported by the Go language and provide some specific code examples. Let’s find out.
TCP (Transmission Control Protocol) is a reliable, connection-oriented transport layer protocol. In the Go language, use the net
package to create a TCP connection and perform data transmission.
package main import ( "fmt" "net" ) func main() { conn, err := net.Dial("tcp", "example.com:80") if err != nil { fmt.Println("Error connecting:", err) return } defer conn.Close() conn.Write([]byte("GET / HTTP/1.1 Host: example.com ")) buffer := make([]byte, 1024) n, err := conn.Read(buffer) if err != nil { fmt.Println("Error reading:", err) return } fmt.Println("Received:", string(buffer[:n])) }
UDP (User Datagram Protocol) is a connectionless transport layer protocol, suitable for scenarios that require fast data transmission but do not require data reliability. In the Go language, the UDP protocol can be used through the net
package.
package main import ( "fmt" "net" ) func main() { conn, err := net.Dial("udp", "example.com:12345") if err != nil { fmt.Println("Error connecting:", err) return } defer conn.Close() conn.Write([]byte("Hello, UDP Server!")) buffer := make([]byte, 1024) n, err := conn.Read(buffer) if err != nil { fmt.Println("Error reading:", err) return } fmt.Println("Received:", string(buffer[:n])) }
HTTP (Hypertext Transfer Protocol) is an application layer protocol commonly used to transmit data between web browsers and web servers. The Go language provides the net/http
package for quickly creating HTTP clients and servers.
package main import ( "fmt" "io/ioutil" "net/http" ) func main() { resp, err := http.Get("https://www.example.com") if err != nil { fmt.Println("Error fetching URL:", err) return } defer resp.Body.Close() body, err := ioutil.ReadAll(resp.Body) if err != nil { fmt.Println("Error reading response:", err) return } fmt.Println("Response:", string(body)) }
WebSocket is a protocol for full-duplex communication over a single TCP connection, typically used in real-time applications. In the Go language, you can use the gorilla/websocket
package to implement WebSocket communication.
package main import ( "fmt" "github.com/gorilla/websocket" "net/url" ) func main() { u := url.URL{Scheme: "ws", Host: "example.com", Path: "/ws"} conn, _, err := websocket.DefaultDialer.Dial(u.String(), nil) if err != nil { fmt.Println("Error connecting to WebSocket:", err) return } defer conn.Close() err = conn.WriteMessage(websocket.TextMessage, []byte("Hello, WebSocket Server!")) if err != nil { fmt.Println("Error sending message:", err) return } _, message, err := conn.ReadMessage() if err != nil { fmt.Println("Error reading message:", err) return } fmt.Println("Received:", string(message)) }
Through the above code examples, we can see that Go language supports multiple network protocols, making developing network applications easier and more efficient. In actual development, appropriate network protocols can be selected and implemented according to needs to meet the needs of different scenarios. Hope this article will be helpful to you.
The above is the detailed content of What network protocols does Go language support?. For more information, please follow other related articles on the PHP Chinese website!