私は onvif カメラで作業していますが、発見に関していくつかの問題があります。
以下のように非常に基本的な検出コードを使用すると、ネットワーク上のほとんどのデバイスから応答が返されますが、いくつかは破棄されています。トレース ログを追加し、ディスカバリ クライアントによって破棄されたメッセージを次の説明とともに確認できます。
対応する検索操作が完了したか、relatedTo 値が無効であるため、messageId='uuid:xxx' および relatedTo='uuid:xx' の ProbeMatches メッセージが DiscoveryClient によってドロップされました。
トレースと MS Network Monitor の relatedTo 値を見ると、それらはまったく同じように見え、ドロップされているものは最初のいくつかの返信にあるため、操作が完了した後ではないと思います。
私はまた、sourceforge にある onvif デバイス マネージャーを実行しました。これには同じ問題がありますが、デバイスが異なります。以前にこれに遭遇した人はいますか、それを引き起こしている可能性のあるアイデアはありません。
public void TryToDiscoverClients()
{
System.Net.ServicePointManager.Expect100Continue = false;
var endPoint = new UdpDiscoveryEndpoint(DiscoveryVersion.WSDiscoveryApril2005);
var discoveryClient = new DiscoveryClient(endPoint);
discoveryClient.FindProgressChanged += discoveryClient_FindProgressChanged;
FindCriteria findCriteria = new FindCriteria();
findCriteria.Duration = TimeSpan.MaxValue;
findCriteria.MaxResults = int.MaxValue;
findCriteria.ContractTypeNames.Add(new XmlQualifiedName("NetworkVideoTransmitter", @"http://www.onvif.org/ver10/network/wsdl"));
findCriteria.ContractTypeNames.Add(new XmlQualifiedName("Device", @"http://www.onvif.org/ver10/device/wsdl"));
discoveryClient.FindAsync(findCriteria);
}
private void discoveryClient_FindProgressChanged(object sender, FindProgressChangedEventArgs e)
{
Results.Add(e);
}