91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

C# ONVIF如何進行設備發現

c#
小樊
94
2024-07-08 21:24:32
欄目: 編程語言

在C#中使用ONVIF進行設備發現的步驟如下:

  1. 導入ONVIF的相關命名空間:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using System.ServiceModel;
using System.ServiceModel.Channels;
using System.Xml;
  1. 創建一個ONVIF設備發現類,并實現設備發現的方法:
public class ONVIFDeviceDiscovery
{
    public static List<string> DiscoverDevices()
    {
        List<string> devices = new List<string>();

        // 創建UDP廣播終結點
        EndpointAddress discoveryEndPointAddress = new EndpointAddress("soap.udp://239.255.255.250:3702");

        // 創建消息工廠
        MessageFactory messageFactory = new MessageFactory();

        // 創建消息版本
        AddressingVersion addressingVersion = AddressingVersion.WSAddressing10;

        // 創建消息頭
        MessageHeader unicastHeader = MessageHeader.CreateHeader("Unicast", "", "");
        MessageHeader multicastHeader = MessageHeader.CreateHeader("Multicast", "", "");

        // 創建綁定元素
        BindingElement[] bindingElements = new BindingElement[2];
        bindingElements[0] = new TextMessageEncodingBindingElement();
        bindingElements[1] = new HttpTransportBindingElement();

        // 創建自定義綁定
        CustomBinding customBinding = new CustomBinding(bindingElements);

        // 創建ChannelFactory
        ChannelFactory<IDiscoveryProxy> factory = new ChannelFactory<IDiscoveryProxy>(customBinding, discoveryEndPointAddress);

        // 創建Channel
        IDiscoveryProxy proxy = factory.CreateChannel();
        factory.Open();

        // 發送消息
        Message message = messageFactory.CreateMessage(addressingVersion, "http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous", multicastHeader, new DiscoveryMessage());
        Message reply = proxy.Discover(message);

        // 解析響應
        if (reply != null)
        {
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(reply.GetReaderAtBodyContents());
            XmlNodeList nodeList = xmlDoc.GetElementsByTagName("XAddrs");

            foreach (XmlNode node in nodeList)
            {
                devices.Add(node.InnerText);
            }
        }

        // 關閉通道和工廠
        factory.Close();

        return devices;
    }
}
  1. 在主程序中調用設備發現方法并輸出設備信息:
class Program
{
    static void Main(string[] args)
    {
        List<string> devices = ONVIFDeviceDiscovery.DiscoverDevices();

        foreach (string device in devices)
        {
            Console.WriteLine("Discovered device: " + device);
        }

        Console.ReadLine();
    }
}

通過以上步驟,您可以在C#中使用ONVIF進行設備發現,并獲取到設備的地址信息。

0
彩票| 民权县| 乐陵市| 大同市| 宿州市| 阳江市| 江门市| 南安市| 周宁县| 霍州市| 云南省| 永定县| 合山市| 达孜县| 浑源县| 故城县| 达拉特旗| 内乡县| 荥阳市| 云和县| 万州区| 海丰县| 桐梓县| 大新县| 永川市| 桐乡市| 崇礼县| 盐津县| 辽中县| 镇巴县| 磐石市| 永胜县| 阿拉善盟| 伊宁市| 仁寿县| 瓦房店市| 离岛区| 宝清县| 南溪县| 格尔木市| 凤阳县|