C#udpClient组播

news2024/12/24 0:26:51

一、0udpClient

控件:

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

打开UDP:

UdpClient udp:

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组播

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);
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1870543.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何在Windows 11上设置默认麦克风和相机?这里有详细步骤

如果你的Windows 11计算机上连接了多个麦克风或网络摄像头,并且希望自动使用特定设备,而不必每次都在设置中乱动,则必须将首选设备设置为默认设备。我们将向你展示如何做到这一点。 如何在Windows 11上更改默认麦克风 有两种方法可以将麦克…

[游戏开发][UE5]引擎使用学习记录

C Log和蓝图Log C Log 方法 UE_Log(参数1,参数2,参数3) //举例: UE_LOG(LogTemp, Error, TEXT("Log Info: %s"),"Test Log"); 三个参数的作用 参数1:输出窗口归类使用,你写什么它就显示什么 参数2&#x…

网络安全入门必选:十款免费的抓包工具有哪些?

下面给大家推荐几款好用的免费的抓包工具软件,有需要的小伙伴们来了解一下。 1. Wireshark抓包分析工具 4.0.1 Wireshark是一款功能强大的网络协议分析器,可以实时检测和抓取网络通讯数据。它支持多种协议和媒体类型,并具备丰富的显示过滤…

从0-1搭建一个web项目(package.json)详解

本章分析package.json文件详解 本文主要对packge.json配置子文件详解 ObJack-Admin一款基于 Vue3.3、TypeScript、Vite3、Pinia、Element-Plus 开源的后台管理框架。在一定程度上节省您的开发效率。另外本项目还封装了一些常用组件、hooks、指令、动态路由、按钮级别权限控制等…

干货:ANR日志分析全面解析

ANR类型 出现ANR的一般有以下几种类型: 1:KeyDispatchTimeout(常见) input事件在5S内没有处理完成发生了ANR。 logcat日志关键字:Input event dispatching timed out 2:BroadcastTimeout 前台Broadcast:onReceiver在…

MYSQL 四、mysql进阶 5(InnoDB数据存储结构)

一、数据库的存储结构:页 索引结构给我们提供了高效的索引方式,不过索引信息以及数据记录都是保存在文件上的,确切说时存储在页结构中,另一方面,索引是在存储引擎中实现的,Mysql服务器上的存储引擎负责对表…

eNSP中VRRP的配置和使用

一、基础配置 1.新建拓扑图 2.配置vlan a.CORE-S1 <Huawei>system-view [Huawei]sysname CORE-S1 [CORE-S1]vlan 10 [CORE-S1-vlan10]vlan 20 [CORE-S1-vlan20]vlan 30 b.CORE-S2 <Huawei>system-view [Huawei]sysname CORE-S2 [CORE-S2]vlan 10 [CORE…

君諾外匯:为什么巴菲特现在加倍下注油气股票?油价上涨是主因吗?

近年来&#xff0c;以巴菲特为代表的一些顶级投资者开始在能源领域加大投资力度&#xff0c;特别是油气股票。这一转变引发了广泛关注&#xff0c;特别是在油价上涨的背景下。本文将Juno markets外匯深入分析巴菲特投资策略的变化原因&#xff0c;探讨其在能源市场的布局及未来…

Linux OpenGrok搭建

文章目录 一、目的二、环境三、相关概念3.1 OpenGrok3.2 CTags3.3 Tomcat 四、OpenGrok搭建4.1 安装jdk4.2 安装ctags依赖4.3 安装universal-ctags4.3.1 下载universal-ctags4.3.2 编译&&安装universal-ctags 4.4 安装Tomcat4.4.1 下载&&解压Tomcat4.4.2 启动T…

IDEA无法输入中文,怎么破

1.导航栏处&#xff0c;点击help菜单&#xff0c;选择Edit Custom VM Options.. 2.编辑文件&#xff0c;在文件末尾添加&#xff1a; -Drecreate.x11.input.methodtrue 3.保存文件即可&#xff0c;如果还是不行&#xff0c;就关闭所有Idea程序&#xff0c;重新启动Idea

Linux:进程和计划任务管理

目录 一、程序和进程 1.1、程序 1.2、进程 1.3、线程 1.4、协程 二、查看进程相关命令 2.1、ps命令&#xff08;查看静态的进程统计信息&#xff09; 第一行为列表标题&#xff0c;其中各字段的含义描述如下 2.2、top命令&#xff08;查看进程动态信息&#xff09; 2…

Session会话与请求域的区别

session会话和请求域&#xff08;也称为request域&#xff09;都是用于存储和管理用户特定信息的重要概念&#xff0c;但它们在作用范围和生命周期上有显著的不同。 请求域 (Request Domain) 作用范围&#xff1a;请求域是面向单次请求的。每次HTTP请求都会创建一个新的request…

Vue报错:Component name “xxx” should always be multi-word vue/multi-word-component

问题&#xff1a;搭建脚手架时报错&#xff0c;具体错误如下&#xff1a; ERROR in [eslint] E:\personalProject\VueProjects\vueproject2\src\components\Student.vue10:14 error Component name "Student" should always be multi-word vue/multi-word-compon…

找不到xinput1_3.dll怎么办?几种靠谱的修复xinput1_3.dll的方法

找不到xinput1_3.dll怎么办&#xff1f;如果你不知道&#xff0c;那么你就详细的看看本文吧&#xff0c;今天我们会给大家详细的讲解找不到xinput1_3.dll这个情况&#xff0c;以及分析xinput1_3.dll这个文件&#xff0c;只要我们熟悉这个文件&#xff0c;那么要搞定修复还是比较…

如何使用Hugging Face Transformers为情绪分析微调BERT?

情绪分析指用于判断文本中表达的情绪的自然语言处理(NLP)技术&#xff0c;它是客户反馈评估、社交媒体情绪跟踪和市场研究等现代应用背后的一项重要技术。情绪可以帮助企业及其他组织评估公众意见、提供改进的客户服务&#xff0c;并丰富产品或服务。 BERT的全称是来自Transfo…

【UE5.3】笔记5-蓝图类

什么是蓝图类&#xff1a;其实就是C类&#xff0c;只不过是UE封装好的且可以直接拖出来可视化使用。 如何创建蓝图类&#xff1f;蓝图类有哪些&#xff1f; 蓝图类分为基于关卡的&#xff0c;基于Actor的&#xff0c;基于组件Component的。 基于关卡的蓝图类 一个关卡只能有…

Jupyter Notebook 说明 和 安装教程【WIN MAC】

一、Jupyter Notebook 简介&#xff08;来源百度百科&#xff09; Jupyter Notebook&#xff08;此前被称为 Python notebook&#xff09;是一个交互式笔记本&#xff0c;支持运行40多种编程语言。 Jupyter Notebook 的本质是一个Web应用程序&#xff0c;便于创建和共享程序文…

综合管廊挂轨巡检机器人:安全高效管理的新力量

综合管廊、电力管廊等作为承载着各类电缆和管线的重要通道&#xff0c;管廊的安全和可靠性对城市的运行至关重要。传统人工巡检效率低、劳动强度大&#xff0c;且可能存在巡检不及时、不准确等问题。难以满足日益复杂和庞大的管廊系统的监控需求。为了解决这些问题&#xff0c;…

物理服务器会不会被DDOS攻击?

物理服务器同样可能遭受分布式拒绝服务&#xff08;DDoS&#xff09;攻击。DDoS攻击的目的是通过大量的请求淹没目标服务器或网络&#xff0c;使其无法处理合法用户的请求&#xff0c;从而导致服务不可用。这种攻击并不区分服务器是物理的还是虚拟的&#xff0c;只要服务器连接…

将idea项目代码部署到Linux系统中

目录 1. 将idea与虚拟机建立连接 2. 设置上传到虚拟机的目录 3.上传项目代码 1. 将idea与虚拟机建立连接 打开idea要上传的项目,找到Tools -> Development -> Configuration 设置一个连接的名称,我这里设置为centos 将Type设置为SFTP,点击SSH configuration 开始配…