C#udpClient组播

一、0udpClient

控件:

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

打开UDP:

UdpClient udp:

cs 复制代码
namespace _01udpClient
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        //打开
        UdpClient udp;
        private void button1_Click(object sender, EventArgs e)
        {
           //1创建udp对象 指定ip地址和端口号
            udp = new UdpClient(new IPEndPoint(IPAddress.Any, 8080));

            //2 接收数据
            startReceive();

        }
        void startReceive()
        {
            new Thread(() =>
            {
                try
                {
                    while (true)
                    {
                        //创建ip接受客户端的ip地址
                        IPEndPoint ip = null;
                        //接收数据 返回字节数组
                        byte[] body =  udp.Receive(ref ip);
                        string s = Encoding.UTF8.GetString(body);
                        BeginInvoke((Action)(() =>
                        {
                            richTextBox1.AppendText(ip.ToString() + ":" + s + "\t\n");
                        }));
                    }
                }
                catch
                {

                }

            }).Start();
        }
        //关闭
        private void button2_Click(object sender, EventArgs e)
        {
            udp.Close();//关闭
            udp = null;
        }

        private void button3_Click(object sender, EventArgs e)
        {
            byte[] bs = Encoding.UTF8.GetBytes(this.textBox1.Text);
            //发数据
            //参数1 字节数组
            //参数2 字节长度
            //参数3 目标主机地址
            //参数4 端口号
            udp.Send(bs, bs.Length, "192.168.107.71", 8080);

        }
    }
}

二、udpClient组播

cs 复制代码
namespace _02udpClinet组播
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        //打开服务器
        private void button3_Click(object sender, EventArgs e)
        {
           
            udp = new UdpClient(new IPEndPoint(IPAddress.Any, 8080));
            strartReceive();
          
        }
        UdpClient udp;
        //异步的方式
        //1 new Thread() 分线程
        //2 Task.Run() 异步任务
        //3 async(异步)和await (等待)
        async void strartReceive()
        {
            while (true)
            {
                //await 跟一个异步的任务
                // 等待异步结束之后 再去执行
                //receiveAsync() 异步接收数据
                UdpReceiveResult body = await udp.ReceiveAsync();
                // body.RemoteEndPoint 远程终端
                //body.Buffer 数据字节数组
                BeginInvoke((Action)(() =>
                {
                    richTextBox1.AppendText(body.RemoteEndPoint.ToString() + ":" + Encoding.UTF8.GetString(body.Buffer)+"\t\n");
                }));
            }

        }

        // 加入组播
        private void button1_Click(object sender, EventArgs e)
        {
            //Join 加入
             udp.JoinMulticastGroup(IPAddress.Parse(this.textBox1.Text));//加入组播地址
        }

        private void button2_Click(object sender, EventArgs e)
        {
            //发送消息
           byte[] bs =  Encoding.UTF8.GetBytes(this.textBox2.Text);
            udp.Send(bs, bs.Length, this.textBox1.Text, 8080);
        }
    }
}
相关推荐
泯泷3 小时前
手搓JSVMM第 8 篇:函数调用:参数、返回值与调用帧
前端·javascript·前端框架
Sherotree3 小时前
Google Antigravity——Agent 被提到主界面
前端·ide·后端·edge浏览器
DogDaoDao3 小时前
Windows 开发提效工具全景指南:60+ 工具的工程化分层配置
windows·git·程序员·开发工具·powershell·everything·msys2
里欧跑得慢4 小时前
Flutter 像素级还原:设计稿到代码的视觉无损转换技巧
前端·css·flutter·web
里欧跑得慢4 小时前
Flutter 三方库 function_tree — 鸿蒙应用开发中的动态数学公式解析与计算神器,实现鸿蒙深度适配下的复杂函数逻辑运行时求值实战(适配鸿蒙 HarmonyOS Next ohos)
android·前端·安全·flutter·华为·harmonyos
苏灿烤鱼4 小时前
没有机密文件,也没有付费数据,在浏览器里造一颗"间谍卫星"
前端·javascript·github
leonkay5 小时前
C# 特性(Attribute)——【1】基础讲解
开发语言·青少年编程·面试·c#·.net·个人开发
泯泷5 小时前
手搓JSVM第 5 篇:写第一个编译器:从 AST 生成 IR
前端·javascript·算法
泯泷5 小时前
手搓JSVM第 7 篇:控制流:if、while 与 jump
前端·javascript·算法
泯泷5 小时前
手搓JSVM第 6 篇:把 IR 编成字节码:emit 与 label fixup
前端·javascript·算法