ホームページ > バックエンド開発 > Golang > Golang でマルチキャスト UDP の IP_MULTICAST_LOOP を有効にする方法

Golang でマルチキャスト UDP の IP_MULTICAST_LOOP を有効にする方法

Mary-Kate Olsen
リリース: 2024-11-20 13:17:19
オリジナル
647 人が閲覧しました

How to Enable IP_MULTICAST_LOOP for Multicast UDP in Golang?

Golang でマルチキャスト UDPConn に IP_MULTICAST_LOOP を設定する方法 (代替アプローチ)

ローカル マルチキャスト パケットを送受信するための IP_MULTICAST_LOOP の設定は Windows でサポートされています。ただし、Go net パッケージには便利な方法がありません。代替アプローチには、 golang.org/x/net/ipv4 パッケージの使用が含まれます。

技術的な詳細:

質問で述べた net.ListenMulticastUDP 関数、 IP_MULTICAST_LOOP を false に設定します。ただし、ipv4.NewPacketConn のソース コードは、IPv4 でこのオプションを設定および取得する方法を示しています。

import (
    "golang.org/x/net/ipv4"
)

// TestLoopback demonstrates setting and getting MulticastLoopback for IPv4
func TestLoopback(c *ipv4.PacketConn) error {
    // Get the current loopback setting
    loop, err := c.MulticastLoopback()
    if err != nil {
        return err
    }
    fmt.Printf("Current loopback status: %v\n", loop)

    // Set the loopback setting to true
    if err := c.SetMulticastLoopback(true); err != nil {
        return err
    }
    fmt.Printf("Loopback set to true\n")

    return nil
}
ログイン後にコピー

実装例:

次の例は、golang の使用を示しています。 .org/x/net/ipv4 を使用して、マルチキャスト ポートでリッスンし、マルチキャスト グループに参加し、MulticastLoopback オプションを設定します。

package main

import (
    "fmt"
    "net"
    "golang.org/x/net/ipv4"
)

func main() {
    ipv4Addr := &net.UDPAddr{IP: net.IPv4(224, 0, 0, 251), Port: 5352}
    conn, err := net.ListenUDP("udp4", ipv4Addr)
    if err != nil {
        fmt.Printf("ListenUDP error %v\n", err)
        return
    }

    pc := ipv4.NewPacketConn(conn)

    // Join multicast group
    if err := pc.JoinGroup(iface, &net.UDPAddr{IP: net.IPv4(224, 0, 0, 251)}); err != nil {
        fmt.Printf("JoinGroup error %v\n", err)
        return
    }

    // Set MulticastLoopback to true
    if err := TestLoopback(pc); err != nil {
        fmt.Printf("TestLoopback error %v\n", err)
        return
    }
}
ログイン後にコピー

この例は、golang.org/x/net/ を使用する柔軟性を示しています。マルチキャスト UDP 接続の IP_MULTICAST_LOOP を設定および取得する機能など、高度なソケット操作用の ipv4。

以上がGolang でマルチキャスト UDP の IP_MULTICAST_LOOP を有効にする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート