Go 言語のネットワーク プログラミング関数を使用して UDP ブロードキャスト通信を実装するにはどうすればよいですか?
ネットワーク通信では、UDP ブロードキャストを使用して、1 対 1 接続を必要とせずに、同じネットワーク上のすべてのデバイスにメッセージを送信できます。 Go言語では、ネットワークプログラミング関数を使用してUDPブロードキャスト通信を実装できます。この記事では、Go 言語のネットワーク プログラミング関数を使用して UDP ブロードキャスト通信を実装する方法と、対応するコード例を紹介します。
まず、net
および fmt
パッケージをインポートする必要があります。net
パッケージは、ネットワーク プログラミングの基本機能を提供します。 fmt パッケージは、フォーマットされた出力に使用されます。
import ( "net" "fmt" )
net.ResolveUDPAddr 関数を使用してアドレス解決を実行し、
net.ListenUDP 関数を使用して UDP ソケットを作成できます。
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() }
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, "字节的数据") }
conn.ReadFromUDP 関数を使用して、UDP ソケットからデータを読み取り、送信者の 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])) }
conn.SetBroadcast 関数を使用して UDP ソケットをブロードキャスト モードに設定し、
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, "字节的广播消息") }
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, "字节的广播消息") }
以上がGo 言語のネットワーク プログラミング関数を使用して UDP ブロードキャスト通信を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。