問題タブ [ssdp]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
iphone - iPhoneのSSDP
iPhoneからネットワーク上のSSDPデバイスを検出するには、UDPメッセージを送信および受信できる必要があります。
パケットをマルチキャストアドレスに送信する必要があり、HTTPリクエストは次のようになる必要があることを知っています。
ドキュメントを読んだところ、CFNetworkでこれをすべて行うことができるようで、読んだ(そしてドキュメントを再読した)にもかかわらず、始めるのに苦労しています。誰かが私に最初の学習のこぶを乗り越えるためのチュートリアルやコードスニペットをお勧めできますか?
CFNetworkプログラミングガイドがあります。
http://developer.apple.com/mac/library/documentation/Networking/Conceptual/CFNetwork/CFNetwork.pdf
およびインターネットソケットを使用したネットワークプログラミングに関するBeejのガイド:
ありがとう
デイブ
PS
この場合、サードパーティのライブラリとフレームワークを使用できません。
linux - SSDP とインターフェイスの IP アドレス
SSDPメッセージを送受信する必要があるUPnP AV / DLNA DMSを作成しています。いくつかのパケットに応答して、リソース (この場合は HTTP サーバー) の URL を含む応答を送信する必要があります。もちろん、このアドレスはパケットの送信者には意味がありません。パケットを受信したインターフェイスのアドレスが最も適切です。M-SEARCH
INADDR_ANY
0.0.0.0
M-SEARCH
M-SEARCH
応答パケットで送信する適切なアドレスを特定するにはどうすればよいですか?
私が検討したいくつかのアイデアは次のとおりです。
- 各ソケットに異なるレシーバーをバインドします。受信者が
M-SEARCH
パケットを受信すると、応答アドレスは応答でソケットのローカル アドレスを使用できます。ただし、これには、すべてのインターフェイスを把握して反復し、インターフェイスの可用性の変化に応じてレシーバーを追加および削除する必要があります。 - に 1 つのレシーバを配置し
INADDR_ANY
、インターフェイスのネットマスクを反復して、考えられるソースを特定します。ただし、複数のインターフェースが同じサブネットを共有する場合があります。 - 受信時にパケットの IP ターゲット アドレスを抽出します。これは IP 固有のものであり、ネットワークの抽象化のどこかで失われる可能性があります。
upnp - SSDP を使用した UPnP デバイスの検索
ネットワーク上のメディア プレーヤーを検索したい。SSDP m-search を使用して行われたと考えるのは正しいですか?
また、デバイスの電源を入れると、その可用性がブロードキャストされますか? そのブロードキャストをリッスンするにはどうすればよいですか? また、m-search クエリを送信するにはどうすればよいですか?
python - tcpdumpでIPヘッダーをスキップします
tcpdump
SSDPサービスのデバッグに使用しています。
UDPパケットを印刷するとき、私がIPおよびUDPヘッダーであると推定するHTTPヘッダーの前に、私は多くのぎこちなさを感じています。これらの印刷を抑制し、アプリケーションレベルのデータをパケット(HTTPヘッダーを含む)に印刷するにはどうすればよいですか?
これが例です、私が望まないものNOTIFY
は2行目の前にあります:
delphi - IdUDPClientを使用してM-SEARCHリクエストを送信できますか?
私のネットワークにはuPNPデバイスがほとんどありません。M-SEARCHリクエストをネットワークに送信しようとしていますが、そこからいくつかの応答を受け取ることを望んでいます。これは私が試していることです:
UDPクライアントから何も受信しません。Wiresharkを使用してネットワークトラフィックを監視していますが、ホストからメッセージが送信されませんでした。
何か案は?ありがとうございました。
私はついに答えを見つけました:
c# - UPnP マルチキャスト: M-SEARCH (ディスカバリー) からの回答がありません
UPnP マルチキャスト (Visual C# 2010 Express、Windows 7 Professional 64 ビットで実行) をテストする小さなプログラムを作成しました。ネットワーク内の UPnP デバイスから UPnP NOTIFY メッセージを受信できます。しかし、M-SEARCH メッセージを送信しても応答がありません。
iOS 環境 (Mac 上の iPhone シミュレーターで実行される iOS 用モノタッチ) で同じコードをテストしました。そこでは正常に動作し、UPnP デバイスからすべての検索応答を取得します。Windows プログラムから M-SEARCH メッセージも表示されます。
Windows (またはファイアウォール?) が検索応答を隠しているようです。何か案が?
コードは次のとおりです。
ssdp - SSDP プロトコル - 実装
SSDP プロトコルを実装しようとしていますが、それがどのように機能するのか正確にはわかりません。SSDP は udp 経由でデータを送信します。これは明らかです。コントローラがネットワークに接続すると、マルチキャスト アドレス 239.255.255.250:1900 に送信できる MSEARCH メッセージでデバイスを検索できます。すべてのデバイスは、このアドレスをリッスンして応答する必要があります。しかし、彼らがどのように反応するかはわかりません。彼らがユニキャストで応答することをwiresharkで見ていますが、応答を受信するポートを特定する方法がわかりません。
編集 - - - - - - - -
スパイク ファジング フレームワークを使用して ssdp ファザーを作成しようとしています。私が言ったように、正しいデータを送信できますが、応答を受信できません。簡単な説明とともに、いくつかのスパイク コードを貼り付けてみます。送信するデータを表す Spike 構造体があります (実際のデータ、サイズ、プロトコル情報を格納します...)。より明確にするために、いくつかの変数を削除しました。
今、私はudp経由でデータを送信しており、次の関数でいくつかの応答を受け取りたいです
関数の実装:
これは正常に機能し、udp 経由でデータを送信します。ここで、開いているソケット current_spike->fd を介していくつかの応答を受け取りたいと考えています。関数 s_read_packet void
しかし、関数 s_read_packet はデータを生成しません...
objective-c - Best way to parse SSDP Discovery in Objective C
I am working on a very simple application to discover a device using SSDP and I am trying to find the easiest way to parse the response from this command. I am trying to avoid having to do a bunch of NSString or regular expressions manipulations.
I have tried the following two approaches:
Approach 1: Using GCDAsyncUdpSocket, I am able to successfully send the discovery command and get the following response:
HTTP/1.1 200 OK
Cache-Control: max-age=300
ST: roku:ecp
USN: uuid:roku:ecp:1234567890
Ext:
Server: Roku UPnP/1.0 MiniUPnPd/1.4
Location: http://192.168.XX.XX:8060/
This looks like a regular HTTP response, but using GCDAsyncUdpSocket, I am getting the response as an NSData object, which I can easily convert to an NSString. However, what would be ideal is to somehow cast this to an NSHTTPURLResponse and then use its methods to get the field values. Any idea if this can be done?
Approach 2: I have tried using a regular NSURLRequest to try to send this command and then I would be able to get an NSHTTPURLResponse back. However, I keep on getting an error because the SSDP discovery command requires me to send this request to port 1900. I use the following code to send the "HTTP" request, I know it is not strictly HTTP, but I thought it may be an easier way to send this UDP command as the requirements look very similar to HTTP.
When I do this, the connection is successful, but I get the following error in the didFailWithError delegate for NSURLConnection:
failed Error Domain=NSPOSIXErrorDomain Code=47 "The operation couldn’t be completed. Address family not supported by protocol family" UserInfo=0x8875940 {NSErrorFailingURLKey=http://239.255.255.250:1900/, NSErrorFailingURLStringKey=http://239.255.255.250:1900/}
This error only happens if I use port 1900, if I leave this out or use another more HTTP friendly port such as 8080, then this works, but obviously the device I am trying to discover does not respond correctly unless it gets the request in port 1900.
Thanks for any help you can provide.
upnp - Web ビデオを Roku にストリーミングする
技術的にビデオ (つまり Youtube ビデオ) を Roku プレーヤーに送信する方法を知っている人はいますか? ストリーミングを可能にする「Twonky Beam」アプリがあり、.mp4 ファイルを Roku に送信して再生するようです。ここでデモを参照してください: http://gigaom.com/video/youtube-on-roku-twonky-airplay/
これは、「Twonky Beam」Roku アプリなしで実行されます。文書化されたものは何も見つかりませんが、Roku がネイティブにサポートしているように見えます。
Roku が UPNP または DLNA デバイスでなくても、どうやってこれを達成できたのか知りたいです。
ここでの洞察は素晴らしいでしょう!
c# - Windows 8 Metro での SSDP 検出が信頼できない
Windows 8 メトロ プログラムで SSDP 検出を実装する際に問題が発生しています。以下はコードです:
このコードはまったく信頼できません。約 50% の確率で、接続されたデバイスを検出できませんが、他の検出では検出できます。しかし、時にはそれが機能します。
ネットワーク スニファ (SmartSniff) は、何度も呼び出しを行ったにもかかわらず、SSDP 要求をキャプチャすることさえできない場合があります。
ときどき機能するため、これは非同期の問題ではないと思います。私を助けてください !ありがとう!