- private (string, string, int) InquiryHikvisionWebCamera()
- {
- string deviceType = string.Empty;
- string name = string.Empty;
- string ip = string.Empty;
- int port = 0;
- string mac = string.Empty;
-
- string msg = string.Empty;
-
- IPEndPoint ipend = new IPEndPoint(IPAddress.Any, 0);
- using (UdpClient client = new UdpClient(ipend))
- {
- client.Client.ReceiveTimeout = 1000;
- client.EnableBroadcast = false;
- client.JoinMulticastGroup(IPAddress.Parse("239.255.255.250"));
- IPEndPoint multicast = new IPEndPoint(IPAddress.Parse("239.255.255.250"), 37020);
-
- var uuid = Guid.NewGuid().ToString().ToUpper();
- msg = $"
{uuid} inquiry "; -
- byte[] buf = Encoding.Default.GetBytes(msg);
- Console.WriteLine("Send Message :" + msg);
- client.Send(buf, buf.Length, multicast);
-
- while (true)
- {
- try
- {
- buf = client.Receive(ref multicast);
- msg = Encoding.Default.GetString(buf);
-
- XmlDocument doc = new XmlDocument();
- doc.LoadXml(msg);
-
- XmlNodeList nodes = doc.DocumentElement.ChildNodes;
- foreach (XmlNode node in nodes)
- {
- Console.WriteLine(node.Name + ": " + node.InnerText);
- switch (node.Name)
- {
- case "DeviceType":
- deviceType = node.InnerText;
- break;
- case "DeviceDescription":
- name = node.InnerText;
- break;
- case "DeviceSN":
- break;
- case "IPv4Address":
- ip = node.InnerText;
- break;
- case "CommandPort":
- port = Convert.ToInt32(node.InnerText);
- break;
- case "MAC":
- mac = node.InnerText;
- break;
- case "Encrypt":
- break;
- default:
- break;
- }
- }
- }
- catch(System.Net.Sockets.SocketException ex)
- {
- Console.WriteLine(ex.Message);
- if (ex.SocketErrorCode == SocketError.TimedOut)
- {
- break;
- }
- }
- catch (Exception ex)
- {
- Console.WriteLine(ex.Message);
- }
- finally
- {
- buf = null;
- }
- }
-
- client.Close();
- }
-
-
- if (deviceType.Equals("10110"))
- {
- return (name, ip, port);
- }
- else
- {
- return (string.Empty, string.Empty, 0);
- }
- }
-
- private void button1_Click(object sender, EventArgs e)
- {
- (string name, string ip, int port) retVal = InquiryHikvisionWebCamera();
- if (!retVal.name.Equals(string.Empty))
- {
- this.textBox1.Text = retVal.name;
- this.textBox2.Text = retVal.ip;
- this.textBox3.Text = retVal.port.ToString();
- }
- }
源代码