当前位置:   article > 正文

C#udpClient组播_c# 加入组播

c# 加入组播

一、0udpClient

控件:

button(打开,关闭,发送),textbox,richTextBox

打开UDP:

UdpClient udp:

  1. namespace _01udpClient
  2. {
  3. public partial class Form1 : Form
  4. {
  5. public Form1()
  6. {
  7. InitializeComponent();
  8. }
  9. //打开
  10. UdpClient udp;
  11. private void button1_Click(object sender, EventArgs e)
  12. {
  13. //1创建udp对象 指定ip地址和端口号
  14. udp = new UdpClient(new IPEndPoint(IPAddress.Any, 8080));
  15. //2 接收数据
  16. startReceive();
  17. }
  18. void startReceive()
  19. {
  20. new Thread(() =>
  21. {
  22. try
  23. {
  24. while (true)
  25. {
  26. //创建ip接受客户端的ip地址
  27. IPEndPoint ip = null;
  28. //接收数据 返回字节数组
  29. byte[] body = udp.Receive(ref ip);
  30. string s = Encoding.UTF8.GetString(body);
  31. BeginInvoke((Action)(() =>
  32. {
  33. richTextBox1.AppendText(ip.ToString() + ":" + s + "\t\n");
  34. }));
  35. }
  36. }
  37. catch
  38. {
  39. }
  40. }).Start();
  41. }
  42. //关闭
  43. private void button2_Click(object sender, EventArgs e)
  44. {
  45. udp.Close();//关闭
  46. udp = null;
  47. }
  48. private void button3_Click(object sender, EventArgs e)
  49. {
  50. byte[] bs = Encoding.UTF8.GetBytes(this.textBox1.Text);
  51. //发数据
  52. //参数1 字节数组
  53. //参数2 字节长度
  54. //参数3 目标主机地址
  55. //参数4 端口号
  56. udp.Send(bs, bs.Length, "192.168.107.71", 8080);
  57. }
  58. }
  59. }

二、udpClient组播

  1. namespace _02udpClinet组播
  2. {
  3. public partial class Form1 : Form
  4. {
  5. public Form1()
  6. {
  7. InitializeComponent();
  8. }
  9. //打开服务器
  10. private void button3_Click(object sender, EventArgs e)
  11. {
  12. udp = new UdpClient(new IPEndPoint(IPAddress.Any, 8080));
  13. strartReceive();
  14. }
  15. UdpClient udp;
  16. //异步的方式
  17. //1 new Thread() 分线程
  18. //2 Task.Run() 异步任务
  19. //3 async(异步)和await (等待)
  20. async void strartReceive()
  21. {
  22. while (true)
  23. {
  24. //await 跟一个异步的任务
  25. // 等待异步结束之后 再去执行
  26. //receiveAsync() 异步接收数据
  27. UdpReceiveResult body = await udp.ReceiveAsync();
  28. // body.RemoteEndPoint 远程终端
  29. //body.Buffer 数据字节数组
  30. BeginInvoke((Action)(() =>
  31. {
  32. richTextBox1.AppendText(body.RemoteEndPoint.ToString() + ":" + Encoding.UTF8.GetString(body.Buffer)+"\t\n");
  33. }));
  34. }
  35. }
  36. // 加入组播
  37. private void button1_Click(object sender, EventArgs e)
  38. {
  39. //Join 加入
  40. udp.JoinMulticastGroup(IPAddress.Parse(this.textBox1.Text));//加入组播地址
  41. }
  42. private void button2_Click(object sender, EventArgs e)
  43. {
  44. //发送消息
  45. byte[] bs = Encoding.UTF8.GetBytes(this.textBox2.Text);
  46. udp.Send(bs, bs.Length, this.textBox1.Text, 8080);
  47. }
  48. }
  49. }
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/787251
推荐阅读
相关标签
  

闽ICP备14008679号