あなたが自宅でルータを持っている場合は、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) } }