• C# 搜索海康威视网络摄像头


    1. private (string, string, int) InquiryHikvisionWebCamera()
    2. {
    3. string deviceType = string.Empty;
    4. string name = string.Empty;
    5. string ip = string.Empty;
    6. int port = 0;
    7. string mac = string.Empty;
    8. string msg = string.Empty;
    9. IPEndPoint ipend = new IPEndPoint(IPAddress.Any, 0);
    10. using (UdpClient client = new UdpClient(ipend))
    11. {
    12. client.Client.ReceiveTimeout = 1000;
    13. client.EnableBroadcast = false;
    14. client.JoinMulticastGroup(IPAddress.Parse("239.255.255.250"));
    15. IPEndPoint multicast = new IPEndPoint(IPAddress.Parse("239.255.255.250"), 37020);
    16. var uuid = Guid.NewGuid().ToString().ToUpper();
    17. msg = $"{uuid}inquiry";
    18. byte[] buf = Encoding.Default.GetBytes(msg);
    19. Console.WriteLine("Send Message :" + msg);
    20. client.Send(buf, buf.Length, multicast);
    21. while (true)
    22. {
    23. try
    24. {
    25. buf = client.Receive(ref multicast);
    26. msg = Encoding.Default.GetString(buf);
    27. XmlDocument doc = new XmlDocument();
    28. doc.LoadXml(msg);
    29. XmlNodeList nodes = doc.DocumentElement.ChildNodes;
    30. foreach (XmlNode node in nodes)
    31. {
    32. Console.WriteLine(node.Name + ": " + node.InnerText);
    33. switch (node.Name)
    34. {
    35. case "DeviceType":
    36. deviceType = node.InnerText;
    37. break;
    38. case "DeviceDescription":
    39. name = node.InnerText;
    40. break;
    41. case "DeviceSN":
    42. break;
    43. case "IPv4Address":
    44. ip = node.InnerText;
    45. break;
    46. case "CommandPort":
    47. port = Convert.ToInt32(node.InnerText);
    48. break;
    49. case "MAC":
    50. mac = node.InnerText;
    51. break;
    52. case "Encrypt":
    53. break;
    54. default:
    55. break;
    56. }
    57. }
    58. }
    59. catch(System.Net.Sockets.SocketException ex)
    60. {
    61. Console.WriteLine(ex.Message);
    62. if (ex.SocketErrorCode == SocketError.TimedOut)
    63. {
    64. break;
    65. }
    66. }
    67. catch (Exception ex)
    68. {
    69. Console.WriteLine(ex.Message);
    70. }
    71. finally
    72. {
    73. buf = null;
    74. }
    75. }
    76. client.Close();
    77. }
    78. if (deviceType.Equals("10110"))
    79. {
    80. return (name, ip, port);
    81. }
    82. else
    83. {
    84. return (string.Empty, string.Empty, 0);
    85. }
    86. }
    87. private void button1_Click(object sender, EventArgs e)
    88. {
    89. (string name, string ip, int port) retVal = InquiryHikvisionWebCamera();
    90. if (!retVal.name.Equals(string.Empty))
    91. {
    92. this.textBox1.Text = retVal.name;
    93. this.textBox2.Text = retVal.ip;
    94. this.textBox3.Text = retVal.port.ToString();
    95. }
    96. }

    源代码

    https://download.csdn.net/download/syukugai/88299251

  • 相关阅读:
    【LLM】大语言模型高效微调方案Lora||直击底层逻辑
    Redis从入门到精通(二)- 入门篇
    Springboot 阻止XSS攻击
    Linux(三)- Vi 和 Vim 编辑器
    D. Vus the Cossack and Numbers
    双指针算法——复写零
    Kubernetes学习(一)入门及集群搭建
    常用排序算法
    24、使用 Java 官方教程学习:① 类变量和类方法详解;② 深入介绍 main() 方法
    开发一个社区网站,只要20分钟?
  • 原文地址:https://blog.csdn.net/syukugai/article/details/132674827