当前位置: 首页 > 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);
}
}
}

http://www.lryc.cn/news/439364.html

相关文章:

  • pikachu下
  • Go语言开发im-websocket服务和vue3+ts开发类似微信pc即时通讯
  • Redis如何实现分布式锁
  • 面向对象程序设计之继承(C++)
  • IAPP发布《2024年人工智能治理实践报告》
  • 了解MySQL 高可用架构:主从备份
  • [OpenCV] 数字图像处理 C++ 学习——15像素重映射(cv::remap) 附完整代码
  • Oreace每日运维操作
  • 【XR】AR HUD
  • C/C++内存管理——内存泄漏/内存碎片
  • 使用 GaLore 预训练LLaMA-7B
  • gitlab无法push(pre-receive hook declined)
  • 物品识别——基于python语言
  • 【PostgreSQL】安装及使用(Navicat/Arcgis),连接(C#)
  • 第L6周:机器学习-随机森林(RF)
  • 【电路笔记】-差分运算放大器
  • git 命令---想要更改远程仓库
  • LeetCode:2848. 与车的相交点 一次遍历,时间复杂度O(n)
  • Xcode 16 RC (16A242) 发布下载,正式版下周公布
  • git 更换远程地址的方法
  • 9. 什么是 Beam Search?深入理解模型生成策略
  • Spring自定义注解
  • 微信小程序:wx.login或调用uni.login时报错the code is a mock one
  • URL的执行流程
  • 双指针算法专题(2)
  • 加密与安全_优雅存储用户密码的最佳实践
  • 【多线程】深入剖析线程池的应用
  • 『功能项目』切换职业面板【48】
  • 【EasyExcel】@ColumnWidth(value = 20) EasyExcel设置列宽不生效
  • CPU 和 GPU:为什么GPU更适合深度学习?