当前位置:   article > 正文

C# Udp测试工具开发

udp测试工具

1、软件UI测试界面

2、创建Config.ini配置文件

  1. [系统参数]
  2. 本地UDP地址=192.168.124.4
  3. 本地UDP端口=7788
  4. 目标控制器IP地址=192.168.124.255
  5. 目标控制器端口号=6666

3、创建全局变量

  1. IniFile ini = new IniFile("./Config.ini");
  2. bool isUdpConnected = false;
  3. static Socket client;
  4. Thread threadRecv;
  5. string recv;
  6. string LocalIp = "192.168.1.25";
  7. int LocalPort = 1000;
  8. string TargetIp = "192.168.1.255";
  9. int TargetPort = 10000;

4、添加UdpForm_Load事件程序

  1. private void UdpForm_Load(object sender, EventArgs e)
  2. {
  3. try
  4. {
  5. LocalIp = ini.IniReadValue("系统参数", "本地UDP地址");
  6. LocalPort = int.Parse(ini.IniReadValue("系统参数", "本地UDP端口"));
  7. TargetIp = ini.IniReadValue("系统参数", "目标控制器IP地址");
  8. TargetPort = int.Parse(ini.IniReadValue("系统参数", "目标控制器端口号"));
  9. txtLocalIp.Text = LocalIp;
  10. txtLocalPort.Text = LocalPort.ToString();
  11. txtTargetIp.Text = TargetIp;
  12. txtTargetPort.Text = TargetPort.ToString();
  13. client = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
  14. client.Bind(new IPEndPoint(IPAddress.Parse(LocalIp), LocalPort));
  15. Thread.Sleep(50);
  16. txtUdpState.Text = "本地Udp创建成功";
  17. isUdpConnected = true;
  18. }
  19. catch
  20. {
  21. txtUdpState.Text = "本地Udp创建失败";
  22. isUdpConnected = false;
  23. }
  24. threadRecv = new Thread(ReciveMsg);
  25. threadRecv.Start();
  26. timer1.Start();
  27. }

5、创建线程ReciveMsg()处理函数

  1. /// <summary>
  2. /// 接收发送给本机ip对应端口号的数据报
  3. /// </summary>
  4. void ReciveMsg()
  5. {
  6. while (true)
  7. {
  8. if(isUdpConnected)
  9. {
  10. EndPoint point = new IPEndPoint(IPAddress.Any, 0);//用来保存发送方的ip和端口号
  11. byte[] buffer = new byte[1024];
  12. int length = client.ReceiveFrom(buffer, ref point);//接收数据报
  13. if(length>0)
  14. {
  15. //显示对方ip地址和端口号
  16. string fromIp = point.ToString();
  17. recv += fromIp;
  18. recv += "\r\n";
  19. //显示发送时间
  20. string sTime = DateTime.Now.ToString();
  21. recv += sTime;
  22. recv += ":";
  23. }
  24. recv += Encoding.UTF8.GetString(buffer, 0, length);
  25. recv += "\r\n";
  26. /*
  27. EndPoint point = new IPEndPoint(IPAddress.Any, 0);//用来保存发送方的ip和端口号
  28. byte[] buffer = new byte[1024];
  29. int length = client.ReceiveFrom(buffer, ref point);//接收数据报
  30. recv += Encoding.UTF8.GetString(buffer, 0, length);
  31. recv += "\r\n";
  32. //txtReciv.Text += recv;
  33. */
  34. }
  35. }
  36. }

6、添加btnSend_Click按钮事件程序

  1. private void btnSend_Click(object sender, EventArgs e)
  2. {
  3. try
  4. {
  5. UdpSend(txtSend.Text, TargetIp, TargetPort);
  6. }
  7. catch
  8. {
  9. }
  10. }

7、封装UdpSend方法

  1. /// <summary>
  2. /// 本地Udp对外单播
  3. /// </summary>
  4. /// <param name="strSend"></param>
  5. /// <param name="ip"></param>
  6. /// <param name="port"></param>
  7. private void UdpSend(string strSend, string ip, int port)
  8. {
  9. try
  10. {
  11. if (isUdpConnected)
  12. {
  13. string targetIp = ip;
  14. //int targetPort = int.Parse(port);
  15. EndPoint point = new IPEndPoint(IPAddress.Parse(targetIp), port);
  16. string msg = strSend;
  17. client.SendTo(Encoding.UTF8.GetBytes(msg), point);
  18. }
  19. }
  20. catch { }
  21. }

8、关闭程序,关闭创建的所有线程

  1. private void UdpForm_FormClosing(object sender, FormClosingEventArgs e)
  2. {
  3. System.Environment.Exit(0); //强制关闭所有线程
  4. }

下载连接

https://download.csdn.net/download/panjinliang066333/85567657

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/酷酷是懒虫/article/detail/895557
推荐阅读
相关标签
  

闽ICP备14008679号