(239.255.255.250:1900)をマルチキャストグループに参加するUPnP

 

あなたが自宅でルータを持っている場合は、UDPマルチキャストをgolang、あなたは試すことができます。

 

パッケージメイン

インポート "BUFIO" 
    "バイト" 
    "ログ" 
    "ネット" 
    "ネット/ HTTP" 
    "正規表現" 

FUNCハンドラ(R * http.Request){ 
    log.Printf(「%vからガット%S%メッセージ: %のV "r.Method、r.URL.Path、r.RemoteAddr、r.Header)
} 

VAR(
    trailingWhitespaceRx = regexp.MustCompile(" + \ R \ n " 
    CRLF                  = [] バイト(" \ R \ nは" 

// 加入UPnPの多播组:239.255.255.250:1900 
FUNCメイン(){ 
    VARのADDR * net.UDPAddr
    VaRのERR誤差

    なら ADDR、ERR = net.ResolveUDPAddr( "UDP"、 "239.255.255.250:1900")。!ERR = ゼロ{ 
        log.Fatal(ERR)
    } 

    VAR net.PacketConn CONN 

    // net.Interfaceがnil、net.joinIPv4Groupを呼び出す
    場合 CONN、ERR = net.ListenMulticastUDP( "UDP"、ゼロ、ADDR)。!ERR = ゼロ{ 
        log.Fatal(ERR)
    } 

    log.Println( "受信を開始する:" 
    BUF: =メイク([] バイト 2048 

    のための{ 
        N、peerAddr、ERR = conn.ReadFrom(BUF [0 :])
        log.Println( "N =" 、N)
        もし ERR =!ゼロ{ 
            log.Fatal(ERR)
            ブレーク
        } 

        reqbytes: = BUF [:n]は
        reqbytes = trailingWhitespaceRx.ReplaceAllLiteral(reqbytes、CRLF)

        REQ、ERR: = http.ReadRequest(bufio.NewReader(bytes.NewBuffer(reqbytes )))
         の場合、ERR =!nilの{ 
            log.Printf( "解析要求に失敗しました:%V" 、ERR)
             リターン
        } 
        req.RemoteAddr = peerAddr.String()
        ハンドラ(REQ)
    } 
}

 

おすすめ

転載: www.cnblogs.com/bear129/p/11956475.html