C# SocketUDP服务器,组播
SocketUDP
自己即是服务器又是客户端 ,在发消息只需要改成对方ip和端口号即可
前提对方必须开启服务器 socket.Bind(new IPEndPoint(IPAddress.Parse("192.168.107.72"), 8080));
控件:Button,TextBox,RichTextBox
打开自己服务器
public Form1()
{InitializeComponent();//1创建一个服务器 绑定的是ip和端口号 192.168.107.83, 8080// 张三的终端 以后谁想跟张三聊的时候 发这个ip和端口号socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);socket.Bind(new IPEndPoint(IPAddress.Any, 8080));startReceive();
}
Socket socket;
void startReceive()
{byte[] bs = new byte[1024];Task.Run(() =>{while (true){int count = socket.Receive(bs);string s = Encoding.UTF8.GetString(bs,0, count);this.Invoke((Action)(() =>{richTextBox1.AppendText(s + "\t\n");}));}});
}
发送按钮事件
private void button1_Click(object sender, EventArgs e)
{//发消息的一定要注意iphe端口号socket.SendTo(Encoding.UTF8.GetBytes(this.textBox1.Text),new IPEndPoint(IPAddress.Parse("192.168.107.73"), 8082));
}
Socket组播服务器

组播需要使用组播地址,在 IPv4 中它的范围从 224.0.0.0 到 239.255.255.255,
并被划分为局部链接多播地址、预留多播地址和管理权限多播地址三类
224.0.0.0 ~ 224.0.0.255: 局部链接多播地址:是为路由协议和其它用途保留的地址,
只能用于局域网中,路由器是不会转发的地址 224.0.0.0 不能用,是保留地址
224.0.1.0 ~ 224.0.1.255: 为用户可用的组播地址(临时组地址),可以用于 Internet 上的。
224.0.2.0 ~ 238.255.255.255: 用户可用的组播地址(临时组地址),全网范围内有效
239.0.0.0 ~ 239.255.255.255: 为本地管理组播地址,仅在特定的本地范围内有效
public Form1(){InitializeComponent();}Socket socket;private void button1_Click(object sender, EventArgs e){//1创建socket对象socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);//2 绑定ip和端口号socket.Bind(new IPEndPoint(IPAddress.Parse("192.168.107.83"), 8080));//3 加入组播地址//SetSocketOption 添加套接字可配置选项//参数1.支持协议类型,//参数2 添加组播地址的功能//参数3 要组播的地址socket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership,new MulticastOption(IPAddress.Parse("224.0.0.188")));//4以后大家要是接受的话 接受组内发来的消息的时候 必须添接受组内代码//5 接收数据startReceive();
}
void startReceive()
{new Thread(() =>{byte[] buffer = new byte[1024];while (true){int count = socket.Receive(buffer);string s = Encoding.UTF8.GetString(buffer, 0, count);richTextBox1.Invoke((Action)(() =>{richTextBox1.AppendText(s + "\t\n");}));}}).Start();
}//发送消息
private void button2_Click(object sender, EventArgs e)
{//发消息指定组地址进行发送,以后要求接受消息端口号和此处端口号保持一致socket.SendTo(Encoding.UTF8.GetBytes(this.textBox1.Text),new IPEndPoint(IPAddress.Parse("224.0.0.188"), 10086));
}
socket组播客户端
控件:
两个按钮(客户端打开接收消息,发送),textbox,richtextBox
public Form1(){InitializeComponent();}Socket socket;private void button1_Click(object sender, EventArgs e){//1创建socket对象socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);//2 绑定ip和端口号socket.Bind(new IPEndPoint(IPAddress.Any, 10086));//3 设置组地址 对客户端加入指定组播地址内socket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership,new MulticastOption(IPAddress.Parse("224.0.1.188")));//4 接受消息Task.Run(() =>{while (true){byte[] buffer = new byte[1024];//int count = socket.Receive(buffer);EndPoint ip = new IPEndPoint(IPAddress.None, 0); //定义endpoint类型变量,终端类型//ReceiveFrom()接受数据的方法 从哪个终端发来的消息//参数3是发来消息的地址 类型是endpointint count = socket.ReceiveFrom(buffer, 0, ref ip);IPEndPoint i1 = ip as IPEndPoint; // 把endpoint类型 转成IPEndPointstring s = Encoding.UTF8.GetString(buffer, 0, count);richTextBox1.Invoke((Action)(() =>{richTextBox1.AppendText(i1.Address+":"+s + "\t\n");richTextBox1.SelectionStart=richTextBox1.Text.Length; richTextBox1.ScrollToCaret();}));}});}private void button2_Click(object sender, EventArgs e){//socket.SendTo(Encoding.UTF8.GetBytes("hello world"),// new IPEndPoint(IPAddress.Parse("192.168.107.83"), 8080));if (Encoding.UTF8.GetBytes(this.textBox1.Text).Length>1024){return;}socket.SendTo(Encoding.UTF8.GetBytes(this.textBox1.Text),new IPEndPoint(IPAddress.Parse("224.0.1.188"), 10086));}
相关文章:
C# SocketUDP服务器,组播
SocketUDP 自己即是服务器又是客户端 ,在发消息只需要改成对方ip和端口号即可 前提对方必须开启服务器 socket.Bind(new IPEndPoint(IPAddress.Parse("192.168.107.72"), 8080)); 控件:Button,TextBox,RichTextBox 打开自己服务器 public…...
上市公司绿色投资者原始数据+计算代码(2008-2022年)
数据简介:“绿色”信号,意味着潜在环境风险更低,从而绿色投资者降低了对绿色债券的风险补偿要求,推动了信用利差的收窄。因此,绿色投资者会通过投资者风险意识影响债券信用风险。绿色投资者在推动企业绿色可持续发展方…...
Redis-主从复制-测试主从模式下的读写操作
文章目录 1、在主机6379写入数据2、在从机6380上写数据报错3、从机只能读数据,不能写数据 1、在主机6379写入数据 127.0.0.1:6379> keys * (empty array) 127.0.0.1:6379> set uname jim OK 127.0.0.1:6379> get uname "jim" 127.0.0.1:6379>…...
Linux系统应用与设置(3):串口调试(minicom)
目录 1. 简述 2. 安装minicom 3. 配置串口参数 4. 打开相应的通信端口 5. 设置 6. 发送字符数据 7. 发送HEX(十六进制) 1. 简述 在Linux系统中,minicom是一个功能强大的串口通信工具,可用于与外部设备进行字符和HEX数据的收…...
Qt | windows Qt6.5.3安卓环境搭建成功版(保姆级教程)
01、第一章 Qt6.5.3安装 资源 Qt 国内下载地址清华大学开源软件镜像站https://mirrors.tuna.tsinghua.edu.cn/qt/archive/online_installers/Qt 阿里云盘下载Qt 安卓开发https://www.alipan.com/s/kNaues6CHaG点击链接保存,或者复制本段内容,打开「阿里云盘」APP ,无需下载极…...
Chrome Extension如何让work flow在页面刷新、跳转继续执行任务
从Electron到Chrome Extension:流程自动化的跨平台探索 在之前的项目中,我使用Electron成功实现了一个流程自动化应用,它极大地提高了工作效率。然而,当面对Chrome扩展程序(Extension)的需求时,我意识到需要一种新的策略来应对浏览器环境下的限制。特别是Chrome Extens…...
数据库调优厂商 OtterTune 宣布停止运营
昨天刷到消息,得知数据库优化厂商 OtterTune 停止了运营。OtterTune 的成员主要来自 CMU Andy Pavlo 教授领导的数据库实验室。公司正式成立于 2021 年 5 月,融资了 1450 万美金。 按照 Andy 教授的说法,公司是被一个收购 offer 搞砸了。同时…...
4、面向对象-typescript
从面向过程转向面向对象,是一个由简易到复杂的过程,主要更多的考虑到对象的属性,方法,行为等。 一、类,对象 类:更偏向于模板,属于抽象类型,指向大类或泛指。 对象ÿ…...
大数据学习之分布式数据采集系统Flume学习
分布式数据采集系统Flume学习 一、Flume架构 1.1 Hadoop业务开发流程 1.2 Flume概述 flume是一个分布式、可靠、和高可用的海量日志采集、聚合和传输的系统。 支持在日志系统中定制各类数据发送方,用于收集数据; 同时,Flume提供对数据进行简单处理&…...
谁用谁夸,为什么BI零售数据分析方案这么受欢迎?
在当今数字化时代,零售行业竞争激烈,如何快速准确地获取数据洞察,成为企业制胜的关键。奥威BI零售数据分析方案,凭借其全面、高效、智能的特点,赢得了广大零售企业的青睐,成为市场上的热门选择。 奥威BI零…...
多路h265监控录放开发-(14)通过PaintCell自定义日历控件继承QCalendarWidget的XCalendar类
首先创建一个新类XCalendar继承QCalendarWidget类,然后在UI视图设计器中把日历提升为XCalendar,通过这个函数自己设置日历的样式 xcalendar.h #pragma once #include <QCalendarWidget> class XCalendar :public QCalendarWidget { public:XCal…...
安卓速度下载v1.0.5/聚合短视频解析下载
功能特色 短视频下载与高级管理 – 支持短视频下载,为您提供一系列高级视频管理功能包括视频内容提取、智能防重复技术、视频体积压缩以及视频转换成GIF图片等; 磁-力链接下载升级 – 现支持磁力链接下载,实现边下载边播放的便捷体验&#x…...
从赛题切入谈如何学习数学建模
1.引言 (1)今天学习了这个汪教授的这个视频,主要是对于一个赛题的介绍讲解,带领我们通过这个赛题知道数学建模应该学习哪些技能,以及这个相关的经验,我感觉这个还是让我自己受益匪浅的 (2&…...
江山欧派杯2024全国华佗五禽戏线上线下观摩交流比赛在亳州开幕
6月28日,2024全国华佗五禽戏线上线下观摩交流比赛在安徽省亳州市开幕。 此次比赛是由安徽省亳州市文化旅游体育局和安徽省非物质文化遗产保护中心主办、亳州市华佗五禽戏协会(国家级非遗华佗五禽戏保护单位)和亳州市传统华佗五禽戏俱乐部&…...
怪兽充电一季度由盈转亏:营收大幅下滑,消费者投诉不断
《港湾商业观察》施子夫 日常生活中,关于移动充电宝“乱扣费”、“充电功率低”的吐槽之声不绝于耳。而原先风靡一时的共享充电宝也被不少网友吐槽为“充电刺客”,足以可见共享充电宝虽作为大众使用频率较高的移动电源产品,但负面评价声音同…...
激光与相机融合标定汇总:提升融合算法的精度与可靠性(附github地址)
前言 随着科技的飞速发展,激光技术与相机技术的融合已成为推动智能化影像发展的重要力量。这种融合不仅提高了成像的精度和效率,还为相关行业带来了革命性的变革。在这篇博客中,我们将深入探讨激光与相机融合标定的原理及其在各个领域的应用…...
市场拓展招聘:完整指南
扩大招聘业务会给你带来很多挑战,更不用说你已经在处理的问题了。助教专业人士每周花近13个小时为一个角色寻找候选人。此外,客户的需求也在不断变化,招聘机构之间的竞争也在加剧。毫无疑问,对增长有战略的方法会有很大的帮助。一…...
Leetcode 501:二叉搜索树中的众数
给你一个含重复值的二叉搜索树(BST)的根节点 root ,找出并返回 BST 中的所有 众数(即,出现频率最高的元素)。 如果树中有不止一个众数,可以按 任意顺序 返回。 假定 BST 满足如下定义…...
esp8266 GPIO
功能综述 ESP8266 的 16 个通⽤ IO 的管脚位置和名称如下表所示。 管脚功能选择 功能选择寄存器 PERIPHS_IO_MUX_MTDI_U(不同的 GPIO,该寄存器不同) PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDI_U,FUNC_GPIO12);PERIPHS_IO_MUX_为前缀。后面的…...
ingress相关yaml文件报错且相关资源一切正常解决方法
今天在执行ingress相关文件的时候莫名其妙报错了,问了别人得知了这个方法 执行ingress相关文件报错 01.yaml是我自己创建关于ingress的yaml文件 报错信息 且相关资源一切正常 解决方法 kubectl get validatingwebhookconfigurations删除ingress-nginx-admissio…...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...
Docker 离线安装指南
参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...
深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录
ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...
Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...
利用ngx_stream_return_module构建简易 TCP/UDP 响应网关
一、模块概述 ngx_stream_return_module 提供了一个极简的指令: return <value>;在收到客户端连接后,立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量(如 $time_iso8601、$remote_addr 等)&a…...
Prompt Tuning、P-Tuning、Prefix Tuning的区别
一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...
PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建
制造业采购供应链管理是企业运营的核心环节,供应链协同管理在供应链上下游企业之间建立紧密的合作关系,通过信息共享、资源整合、业务协同等方式,实现供应链的全面管理和优化,提高供应链的效率和透明度,降低供应链的成…...
pam_env.so模块配置解析
在PAM(Pluggable Authentication Modules)配置中, /etc/pam.d/su 文件相关配置含义如下: 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块,负责验证用户身份&am…...
JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作
一、上下文切换 即使单核CPU也可以进行多线程执行代码,CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短,所以CPU会不断地切换线程执行,从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...
