Maison >développement back-end >Golang >Connaissances clés et guide pratique de la programmation réseau en langage Go
Pour maîtriser les points clés et l'expérience pratique de la programmation réseau en langage Go, des exemples de code spécifiques sont nécessaires
1 Les points clés de la programmation réseau en langage Go
La programmation réseau fait référence au. utilisation des réseaux informatiques pour la communication Technologie de programmation. Dans le langage Go, nous pouvons utiliser le package net dans la bibliothèque standard pour la programmation réseau, y compris la création et la gestion des connexions TCP et UDP, et la réalisation de l'interaction entre le serveur et le client.
En langage Go, les sockets sont représentés et exploités à l'aide d'interfaces dans le package net. Vous pouvez créer un socket à l'adresse spécifiée en appelant la fonction Listen et utiliser la méthode Accept pour recevoir les demandes de connexion du client. Après avoir reçu la connexion, les données peuvent être lues et écrites via les méthodes Read et Write.
Ce qui suit est un exemple simple de code de serveur TCP pour construire un serveur qui écoute sur le port local 8080 :
package main import ( "fmt" "net" ) func handleConn(conn net.Conn) { defer conn.Close() // 处理连接 // ... } func main() { listener, err := net.Listen("tcp", "localhost:8080") if err != nil { fmt.Println("Error listening:", err.Error()) return } defer listener.Close() fmt.Println("Server is listening on localhost:8080") for { conn, err := listener.Accept() if err != nil { fmt.Println("Error accepting:", err.Error()) return } go handleConn(conn) } }
Ce qui suit est un simple code client TCP Exemple, connectez-vous au port local 8080 et envoyez des données :
package main import ( "fmt" "net" ) func main() { conn, err := net.Dial("tcp", "localhost:8080") if err != nil { fmt.Println("Error dialing:", err.Error()) return } defer conn.Close() // 发送数据 // ... // 接收数据 // ... }
En plus de TCP, le langage Go prend également en charge le protocole UDP. UDP est un protocole de transmission sans connexion qui présente une surcharge inférieure et une vitesse de transmission plus élevée que TCP.
Ce qui suit est un exemple simple de code de serveur UDP :
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() buffer := make([]byte, 1024) for { n, addr, err := conn.ReadFrom(buffer) if err != nil { fmt.Println("Error reading:", err.Error()) return } fmt.Printf("Received '%s' from %s ", string(buffer[:n]), addr.String()) } }
Ce qui suit est un exemple simple de code client UDP :
package main import ( "fmt" "net" ) func main() { serverAddr, err := net.ResolveUDPAddr("udp", "localhost:8080") if err != nil { fmt.Println("Error resolving address:", err.Error()) return } conn, err := net.DialUDP("udp", nil, serverAddr) if err != nil { fmt.Println("Error dialing:", err.Error()) return } defer conn.Close() // 发送数据 // ... // 接收数据 // ... }
2. Expérience pratique de la programmation réseau en langage Go
dans l'implémentation du serveur les programmes doivent généralement gérer plusieurs connexions simultanées. Le modèle de concurrence du langage Go est très adapté à la programmation réseau. En utilisant des goroutines et des canaux, nous pouvons facilement implémenter des programmes serveur à haute concurrence.
La programmation réseau peut rencontrer diverses situations et erreurs anormales, telles qu'une interruption de connexion, des délais d'attente de lecture et d'écriture, etc. Par conséquent, nous devons gérer ces exceptions et erreurs de manière raisonnable dans le code pour garantir la stabilité et la fiabilité du programme.
En plus des protocoles TCP et UDP, il existe d'autres protocoles réseau et bibliothèques courants qui peuvent être utilisés, tels que le protocole HTTP, le protocole WebSocket, TLS/SSL, etc. En nous familiarisant avec l’utilisation de ces protocoles et bibliothèques, nous pouvons plus facilement mettre en œuvre diverses applications réseau.
Résumé :
En maîtrisant les points clés et l'expérience pratique de la programmation réseau en langage Go, nous pouvons facilement implémenter diverses applications réseau, y compris des programmes serveur et client. Dans le même temps, en gérant raisonnablement les exceptions et les erreurs, nous pouvons garantir la stabilité et la fiabilité du programme. La programmation réseau est un domaine très difficile qui nécessite un apprentissage et une pratique continus pour être maîtrisé. J'espère que le contenu ci-dessus pourra vous être utile, allez !
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!