Maison> développement back-end> Golang> le corps du texte

Comment utiliser les fonctions de programmation réseau en langage Go pour implémenter la communication de diffusion UDP ?

WBOY
Libérer: 2023-07-30 13:24:22
original
1396 Les gens l'ont consulté

Comment utiliser les fonctions de programmation réseau en langage Go pour implémenter la communication de diffusion UDP ?

Dans la communication réseau, la diffusion UDP peut être utilisée pour envoyer des messages à tous les appareils sur le même réseau sans avoir besoin d'une connexion individuelle. En langage Go, vous pouvez utiliser les fonctions de programmation réseau pour implémenter la communication de diffusion UDP. Cet article explique comment utiliser les fonctions de programmation réseau dans le langage Go pour implémenter la communication de diffusion UDP et fournit des exemples de code correspondants.

Tout d'abord, nous devons importer les packagesnetetfmt. Le packagenetfournit des fonctions de base pour la programmation réseau, et le. fmt Le packageest utilisé pour la sortie formatée.netfmt包,net包提供了用于网络编程的基本函数,而fmt包用于格式化输出。

import ( "net" "fmt" )
Copier après la connexion

接下来,我们需要创建一个UDP Socket,并将其绑定到指定的IP地址和端口上。我们可以使用net.ResolveUDPAddr函数来进行地址解析,并使用net.ListenUDP函数创建一个UDP Socket。

func main() { // 解析地址 addr, err := net.ResolveUDPAddr("udp", "127.0.0.1:8080") if err != nil { fmt.Println("地址解析失败:", err) return } // 创建Socket conn, err := net.ListenUDP("udp", addr) if err != nil { fmt.Println("创建UDP Socket失败:", err) return } defer conn.Close() }
Copier après la connexion

在创建UDP Socket之后,我们可以使用conn.WriteToUDP函数向指定的IP地址和端口发送UDP数据。

func main() { // ... n, err := conn.WriteToUDP([]byte("Hello, World!"), addr) if err != nil { fmt.Println("发送UDP数据失败:", err) return } fmt.Println("发送了", n, "字节的数据") }
Copier après la connexion

然后,我们需要在UDP Socket上监听消息的接收。我们可以使用conn.ReadFromUDP函数从UDP Socket中读取数据,并获取发送者的IP地址和端口。

func main() { // ... buffer := make([]byte, 1024) n, remoteAddr, err := conn.ReadFromUDP(buffer) if err != nil { fmt.Println("接收UDP数据失败:", err) return } fmt.Println("接收到来自", remoteAddr, "的UDP数据:", string(buffer[:n])) }
Copier après la connexion

最后,我们可以使用conn.SetBroadcast函数将UDP Socket设置为广播模式,并使用conn.WriteToUDP

func main() { // ... // 设置为广播模式 err = conn.SetBroadcast(true) if err != nil { fmt.Println("设置广播模式失败:", err) return } // 广播消息 broadcastAddr := &net.UDPAddr{IP: net.IPv4(255, 255, 255, 255), Port: 8080} n, err = conn.WriteToUDP([]byte("Broadcast Message"), broadcastAddr) if err != nil { fmt.Println("发送广播消息失败:", err) return } fmt.Println("发送了", n, "字节的广播消息") }
Copier après la connexion

Ensuite, nous devons créer un socket UDP et le lier à l'adresse IP et au port spécifiés. Nous pouvons utiliser la fonction net.ResolveUDPAdrpour effectuer la résolution d'adresse et la fonction net.ListenUDPpour créer un socket UDP.

package main import ( "net" "fmt" ) func main() { addr, err := net.ResolveUDPAddr("udp", "127.0.0.1:8080") if err != nil { fmt.Println("地址解析失败:", err) return } conn, err := net.ListenUDP("udp", addr) if err != nil { fmt.Println("创建UDP Socket失败:", err) return } defer conn.Close() n, err := conn.WriteToUDP([]byte("Hello, World!"), addr) if err != nil { fmt.Println("发送UDP数据失败:", err) return } fmt.Println("发送了", n, "字节的数据") buffer := make([]byte, 1024) n, remoteAddr, err := conn.ReadFromUDP(buffer) if err != nil { fmt.Println("接收UDP数据失败:", err) return } fmt.Println("接收到来自", remoteAddr, "的UDP数据:", string(buffer[:n])) err = conn.SetBroadcast(true) if err != nil { fmt.Println("设置广播模式失败:", err) return } broadcastAddr := &net.UDPAddr{IP: net.IPv4(255, 255, 255, 255), Port: 8080} n, err = conn.WriteToUDP([]byte("Broadcast Message"), broadcastAddr) if err != nil { fmt.Println("发送广播消息失败:", err) return } fmt.Println("发送了", n, "字节的广播消息") }
Copier après la connexion
Après avoir créé le socket UDP, nous pouvons utiliser la fonction conn.WriteToUDPpour envoyer des données UDP à l'adresse IP et au port spécifiés.

rrreee

Ensuite, nous devons surveiller la réception des messages sur le Socket UDP. Nous pouvons utiliser la fonction conn.ReadFromUDPpour lire les données du socket UDP et obtenir l'adresse IP et le port de l'expéditeur. rrreeeEnfin, nous pouvons utiliser la fonction conn.SetBroadcastpour définir le socket UDP en mode diffusion et utiliser la fonction conn.WriteToUDPpour envoyer des messages de diffusion. rrreeeL'exemple de code complet est le suivant : rrreeeGrâce à l'exemple de code ci-dessus, nous pouvons utiliser les fonctions de programmation réseau du langage Go pour implémenter la communication de diffusion UDP. Vous pouvez le modifier et l'étendre en fonction des besoins réels pour réaliser des fonctions de communication réseau plus complexes.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!