C# ONVIF如何进行设备发现

   2024-10-07 9930
核心提示:在C#中使用ONVIF进行设备发现的步骤如下:导入ONVIF的相关命名空间:using System;using System.Collections.Generic;using Syst

在C#中使用ONVIF进行设备发现的步骤如下:

导入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;
创建一个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;    }}
在主程序中调用设备发现方法并输出设备信息:
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进行设备发现,并获取到设备的地址信息。

 
举报打赏
 
更多>同类物流大全
推荐图文
推荐物流大全
点击排行

网站首页  |  关于我们  |  联系方式网站留言    |  赣ICP备2021007278号