Maison  >  Article  >  développement back-end  >  Quelles sont les manières de gérer les connexions réseau en langage Go ?

Quelles sont les manières de gérer les connexions réseau en langage Go ?

王林
王林original
2023-06-11 08:49:55939parcourir

Quelles sont les manières de gérer les connexions réseau en langage Go ?

En tant que langage efficace et simple à utiliser, l'un des grands avantages du langage Go est qu'il est livré avec une riche bibliothèque de développement réseau. Lors de l'exécution de la programmation réseau, le langage Go fournit une variété de méthodes d'implémentation, notamment : TCP, UDP, HTTP, WebSocket et d'autres protocoles. Dans l'article suivant, nous présenterons en détail comment gérer les connexions réseau couramment utilisées dans le langage Go.

1. TCP

TCP est un protocole de transmission réseau orienté connexion (orienté connexion). Le protocole TCP fournit des services de transmission fiables et une transmission complète des données. Dans le langage Go, les connexions TCP sont implémentées via le package net. Créez une connexion TCP à l'aide des méthodes Dial, Listen et Accept fournies dans le package net. Le code est le suivant :

Client :

conn, err := net.Dial("tcp", "127.0.0.1:8080")

Serveur :

l, err := net.Listen("tcp", "127.0.0.1:8080")
conn, err := l.Accept()

Après avoir obtenu la connexion TCP, on peut appeler la méthode Write and Read effectue des opérations de lecture et d’écriture. Les méthodes d'écriture et de lecture des connexions TCP sont bloquantes, ce qui signifie que les opérations de lecture et d'écriture se bloqueront jusqu'à ce que la connexion TCP atteigne un état lisible et inscriptible.

2. UDP

UDP est un protocole de transmission réseau sans connexion (non orienté connexion). Comparé au protocole TCP, le protocole UDP offre une vitesse de transmission plus rapide, mais ne garantit pas la sécurité et l'intégrité des données. Dans le langage Go, les connexions UDP sont également implémentées via le package net. Créez une connexion UDP à l'aide des méthodes ListenUDP et DialUDP fournies dans le package net. Le code est le suivant :

Client :

conn, err := net.DialUDP("udp", nil, &net.UDPAddr{IP: []byte{127,0,0,1}, Port: 8080})

Serveur :

addr, err := net.ResolveUDPAddr("udp", "127.0.0.1:8080")
conn, err := net.ListenUDP("udp", addr)

Les connexions UDP fournissent également des méthodes de blocage d'écriture et de lecture. Pour les connexions UDP, une attention particulière doit être portée au fait que la taille d'un paquet UDP ne peut pas dépasser 64 Ko.

3. HTTP

HTTP est un protocole de couche application basé sur le protocole TCP et est couramment utilisé pour la transmission de données entre les navigateurs Web et les serveurs Web. Dans le langage Go, nous pouvons utiliser le package net/http pour gérer les connexions HTTP. En appelant les méthodes Get, Post, ServeHTTP et d'autres méthodes fournies dans le package http, nous pouvons terminer l'envoi et la réception des requêtes HTTP.

Client :

// 发送Get请求
resp, err := http.Get("http://www.example.com/")
// 发送Post请求
resp, err := http.Post("http://www.example.com/login", "application/x-www-form-urlencoded", bytes.NewBufferString("username=admin&password=123456"))

// 接收HTTP响应
body, err := ioutil.ReadAll(resp.Body)

Serveur :

// 注册HTTP处理函数
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
    w.Write([]byte("Hello, world!"))
})
// 启动HTTP服务
err := http.ListenAndServe(":8080", nil)

En utilisant le package net/http, nous pouvons gérer les connexions HTTP très facilement.

4. WebSocket

WebSocket est un protocole de couche application basé sur le protocole TCP, offrant des capacités de communication bidirectionnelle en temps réel. Les applications Web utilisent souvent le protocole WebSocket pour établir une communication en temps réel avec le serveur. Dans le langage Go, nous pouvons utiliser le package gorilla/websocket pour gérer les connexions WebSocket. Le code est le suivant :

Client :

// 建立WebSocket连接
conn, _, err := websocket.DefaultDialer.Dial("ws://localhost:8080/ws", nil)
// 发送WebSocket消息
err = conn.WriteMessage(websocket.TextMessage, []byte("Hello, world!"))
// 接收WebSocket消息
_, message, err := conn.ReadMessage()

Serveur :

// 注册WebSocket处理函数
http.HandleFunc("/ws", func(w http.ResponseWriter, r *http.Request) {
    conn, err := upgrader.Upgrade(w, r, nil)
    // 发送WebSocket消息
    err = conn.WriteMessage(websocket.TextMessage, []byte("Hello, world!"))
    // 接收WebSocket消息
    _, message, err := conn.ReadMessage()
})
// 启动HTTP服务
err := http.ListenAndServe(":8080", nil)

En utilisant le package gorilla/websocket, on peut créer et créer WebSocket Connexions. Fonctions d'envoi et de réception de messages.

Summary

Le langage Go fournit une variété de méthodes de traitement de connexion réseau, notamment TCP, UDP, HTTP, WebSocket et d'autres protocoles. Grâce à ces protocoles, nous pouvons implémenter diverses applications réseau. Le code ci-dessus n'est qu'un exemple simple, les lecteurs peuvent effectuer une programmation réseau plus complexe en fonction de leurs besoins spécifiques.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn