当前位置: 首页 > news >正文

C# UDP与TCP点发【速发速断】模式

1、UDP 客户端

//由于收发都在本机,所以只用一个IP地址
IPAddress addr= IPAddress.Parse("127.0.0.1");
var ptLocal = new IPEndPoint(addr,9001);//本机节点,用于发送var ptDst = new IPEndPoint(addr,9002);//目标节点
//在本地建立udp服务
var udp = new Udpclient(ptLocal);
bytell buffer = Encoding.UTF8.GetBytes("hello")//将内容发给ptDstudp.Send(buffer,buffer.Length,ptDst);

2、UDP服务端

//由于收发都在本机,所以只用一个IP地址
IPAddress addr= IPAddress.Parse("127.0.0.1");
var ptLocal = new IPEndPoint(addr,9001);//本机节点,用于发送var udp = new Udpclient(ptLocal);var thread = new Thread(Res)
thread.start();var ptDst = new IPEndPoint(addr,9002);//目标节点void Res()
{while(true)
{
var received =udp.Receive(ref ptDst);
string info = Encoding.UTF8.GetString(received);
info =$"{ptDst.Address}:{ptDst.Port}:{info}";
Console.WriteLine(info);
bytell buf = Encoding.UTF8.GetBytes("What are our children's names");
udp.send(buf,buf.Length,ptDst);//将内容发给ptDst
}
}

3、TCP客户端

TcpClient tcp = new Tcpclient("127.0.0.1",9002);
NetworkStreamn=tcp.GetStream();
var w = new BinaryWriter(n);
byte[] buffer = Encoding.UTF8.GetBytes("hello");
w.Write(buffer,0,buffer.Length);
Thread.Sleep(2000); //这里间隔一下 ,要不然服务器端看不到客户端 , 多个点发采用Task处理
w.Flush();

4、TCP接收端

TcpListener serv = new TcpListener(IPAddress.Any,9002);
serv.start();var thread = new Thread(Res)
thread.start();void Res{Byte[] bytes = new Byte[256];
int i;
while(true)
{
var c=serv.AcceptTcpClient();
var n=c.GetStream();
while((i=n.Read(bytes,0,bytes.Length))!=0)
{
var msg=Encoding.AsCII.GetString(bytes,0,i);
Console.WriteLine($"Received:{msg}");
mSg += ",too";
var data = Encoding.AsCII.GetBytes(msg)
n.Write(data,0,data.Length);
}
}
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 用SpringBoot进行通义千问接口调用同步方法和异步流式多轮回复方法
  • go-map系统学习
  • 【 html+css 绚丽Loading 】 000049 流云穿梭环
  • Imagination推出性能最高且具有高等级功能安全性的汽车GPU IP
  • VuePress搭建文档网站/个人博客(详细配置)主题配置-导航栏配置
  • Redhat 8,9系(复刻系列) 一键部署Oracle23ai rpm
  • 【高等数学学习记录】函数
  • 【裸机装机系列】4.kali(ubuntu)-配置个人用户的sudo权限并进行bashrc的其他配置
  • IDEA-调用Restful接口
  • cmake--target_link_libraries
  • Go语言现代web开发15 泛型和错误
  • 探索Python中的装饰器
  • C++ char*和char[] 可能指向的内存区域详解(附实验)
  • 安卓BLE蓝牙通讯
  • Ubuntu搭建FTP服务器
  • git 常用命令
  • JavaScript 是如何工作的:WebRTC 和对等网络的机制!
  • Leetcode 27 Remove Element
  • python_bomb----数据类型总结
  • Python代码面试必读 - Data Structures and Algorithms in Python
  • Ruby 2.x 源代码分析:扩展 概述
  • Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
  • Unix命令
  • vue和cordova项目整合打包,并实现vue调用android的相机的demo
  • Yeoman_Bower_Grunt
  • 程序员该如何有效的找工作?
  • 精彩代码 vue.js
  • 配置 PM2 实现代码自动发布
  • 区块链技术特点之去中心化特性
  • 思维导图—你不知道的JavaScript中卷
  • 推荐一个React的管理后台框架
  • 白色的风信子
  • ​学习笔记——动态路由——IS-IS中间系统到中间系统(报文/TLV)​
  • ​学习一下,什么是预包装食品?​
  • #C++ 智能指针 std::unique_ptr 、std::shared_ptr 和 std::weak_ptr
  • (13)Hive调优——动态分区导致的小文件问题
  • (php伪随机数生成)[GWCTF 2019]枯燥的抽奖
  • (Qt) 默认QtWidget应用包含什么?
  • (Redis使用系列) Springboot 实现Redis消息的订阅与分布 四
  • (第二周)效能测试
  • (附源码)spring boot儿童教育管理系统 毕业设计 281442
  • (附源码)计算机毕业设计SSM基于健身房管理系统
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (切换多语言)vantUI+vue-i18n进行国际化配置及新增没有的语言包
  • (五)c52学习之旅-静态数码管
  • (一)基于IDEA的JAVA基础1
  • .bat批处理(七):PC端从手机内复制文件到本地
  • .Net MVC4 上传大文件,并保存表单
  • .NET 药厂业务系统 CPU爆高分析
  • .NET 中选择合适的文件打开模式(CreateNew, Create, Open, OpenOrCreate, Truncate, Append)
  • .net2005怎么读string形的xml,不是xml文件。
  • .NetCore部署微服务(二)
  • .NET基础篇——反射的奥妙
  • .net开源工作流引擎ccflow表单数据返回值Pop分组模式和表格模式对比
  • .pop ----remove 删除