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

网站建设推广群国学大师网站谁做的

网站建设推广群,国学大师网站谁做的,网站建设课程设计百度文库,网站进入特效文章目录 前言相关文章前言设计代码简单使用运行结果 前言 我最近有个需求要写Tcp服务端#xff0c;我发现Tcp服务端的回调函数比较麻烦#xff0c;简化Tcp的服务#xff0c;我打算自己封装一个简单的Tcp服务端。 相关文章 C# TCP应用编程三 异步TCP应用编程 C# Tcpclient… 文章目录 前言相关文章前言设计代码简单使用运行结果 前言 我最近有个需求要写Tcp服务端我发现Tcp服务端的回调函数比较麻烦简化Tcp的服务我打算自己封装一个简单的Tcp服务端。 相关文章 C# TCP应用编程三 异步TCP应用编程 C# Tcpclient Tcplistener 服务器接收多个客户端消息通讯 关于C#Socket断开重连问题 前言 我最近有个Tcp服务端的项目发现TcpListener 服务端官方写起来很麻烦。而且没有回调函数。现在做个简单的服务端封装 设计 #mermaid-svg-MfJRajt4eQGGeIC6 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-MfJRajt4eQGGeIC6 .error-icon{fill:#552222;}#mermaid-svg-MfJRajt4eQGGeIC6 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-MfJRajt4eQGGeIC6 .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-MfJRajt4eQGGeIC6 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-MfJRajt4eQGGeIC6 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-MfJRajt4eQGGeIC6 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-MfJRajt4eQGGeIC6 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-MfJRajt4eQGGeIC6 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-MfJRajt4eQGGeIC6 .marker.cross{stroke:#333333;}#mermaid-svg-MfJRajt4eQGGeIC6 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-MfJRajt4eQGGeIC6 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-MfJRajt4eQGGeIC6 .cluster-label text{fill:#333;}#mermaid-svg-MfJRajt4eQGGeIC6 .cluster-label span{color:#333;}#mermaid-svg-MfJRajt4eQGGeIC6 .label text,#mermaid-svg-MfJRajt4eQGGeIC6 span{fill:#333;color:#333;}#mermaid-svg-MfJRajt4eQGGeIC6 .node rect,#mermaid-svg-MfJRajt4eQGGeIC6 .node circle,#mermaid-svg-MfJRajt4eQGGeIC6 .node ellipse,#mermaid-svg-MfJRajt4eQGGeIC6 .node polygon,#mermaid-svg-MfJRajt4eQGGeIC6 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-MfJRajt4eQGGeIC6 .node .label{text-align:center;}#mermaid-svg-MfJRajt4eQGGeIC6 .node.clickable{cursor:pointer;}#mermaid-svg-MfJRajt4eQGGeIC6 .arrowheadPath{fill:#333333;}#mermaid-svg-MfJRajt4eQGGeIC6 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-MfJRajt4eQGGeIC6 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-MfJRajt4eQGGeIC6 .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-MfJRajt4eQGGeIC6 .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-MfJRajt4eQGGeIC6 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-MfJRajt4eQGGeIC6 .cluster text{fill:#333;}#mermaid-svg-MfJRajt4eQGGeIC6 .cluster span{color:#333;}#mermaid-svg-MfJRajt4eQGGeIC6 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-MfJRajt4eQGGeIC6 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} TcpServerService ShowMsg:打印消息 AddClient_CallBack:新增Tcp客户端回调函数 SendMsg/ReceiveMsg:Tcp客户端发送接受回调 Clients:Tcp客户端集合,连接增加,断开去除 其它函数 代码 public class TcpServeService {public string Ip { get; set; }public int Port { get; set; }public TcpListener Server { get; set; }public ListTcpClient Clients { get; set; }/// summary/// 客户端添加回调函数如果要重写通讯逻辑需要覆盖/// /summarypublic ActionTcpClient AddClient_CallBack { get; set; }public Actionstring ShowMsg { get; set; }/// summary/// 默认自动回复Tcp服务端/// /summary/// param nameip/param/// param nameport/parampublic TcpServeService(string ip, int port){Clients new ListTcpClient();ShowMsg (msg) Console.WriteLine(msg);AddClient_CallBack (client) AutoSendBack(client);this.Ip ip;this.Port port;Server new TcpListener(IPAddress.Parse(ip), port);}/// summary/// Tcp添加Client回调/// /summary/// param namear/paramprivate void DoAcceptTcpclient(IAsyncResult ar){// Get the listener that handles the client request.TcpListener listener (TcpListener)ar.AsyncState;// End the operation and display the received data on // the console.TcpClient client listener.EndAcceptTcpClient(ar);Clients.Add(client);// Process the connection here. (Add the client to a// server table, read data, etc.)ShowMsg($Tcp客户端连接成功,当前连接数{Clients.Count},Id[{client.Client.RemoteEndPoint.ToString()}]);AddClient_CallBack(client);//开启线程用来不断接收来自客户端的数据Server.BeginAcceptTcpClient(new AsyncCallback(DoAcceptTcpclient), Server);}/// summary/// 移除Tcp客户端/// /summary/// param nameclient/parampublic void RemoveClient(TcpClient client){NetworkStream stream client.GetStream();ShowMsg($Tcp客户端连接断开,当前连接数{Clients.Count},Id[{client.Client.RemoteEndPoint.ToString()}]);stream.Close();client.Close();Clients.Remove(client);}/// summary/// 启动Tcp服务/// /summarypublic void Start(){Server.Start();Server.BeginAcceptTcpClient(new AsyncCallback(DoAcceptTcpclient), Server);ShowMsg($Tcp服务端启动成功!IP[{Ip}],Port[{Port}]);}/// summary/// 返回数据/// /summary/// param nameStr/param/// param nameBytes/parampublic record TcpData(string Str, byte[] Bytes);/// summary/// 同步阻塞读取数据/// /summary/// param nameclient/param/// returns/returnspublic static TcpData ReadMsg(TcpClient client){NetworkStream networkStream client.GetStream();var resBytes new byte[client.ReceiveBufferSize];var num networkStream.Read(resBytes, 0, resBytes.Length);resBytes resBytes.Take(num).ToArray();var resStr UnicodeEncoding.ASCII.GetString(resBytes);if (!IsConnect(client)){throw new Exception(${client.Client.RemoteEndPoint?.ToString()}Tcp连接已断开);}return new TcpData(resStr,resBytes);}/// summary/// 发送Ascll数据/// /summary/// param nametcpClient/param/// param namemsg/parampublic static void SendMsg(TcpClient tcpClient, string msg){byte[] arrSendMsg Encoding.UTF8.GetBytes(msg);SendMsg(tcpClient, arrSendMsg);}/// summary/// Tcp客户端连接是否断开/// /summary/// param nametcpClient/param/// returns/returnspublic static bool IsConnect(TcpClient tcpClient){if (tcpClient.Client.Poll(1, SelectMode.SelectRead) tcpClient.Available 0){return false;}else { return true; }}/// summary/// 发送Bytes[]数据/// /summary/// param nametcpClient/param/// param namemsg/parampublic static void SendMsg(TcpClient tcpClient, byte[] msg){NetworkStream networkStream tcpClient.GetStream();networkStream.Write(msg, 0, msg.Length);}/// summary/// 发送并返回数据/// /summary/// param nametcpClient/param/// param namemsg/param/// returns/returnspublic static TcpData SendAndReceive(TcpClient tcpClient,string msg){SendMsg(tcpClient,msg);return ReadMsg(tcpClient);}public static TcpData SendAndReceive(TcpClient tcpClient, byte[] msg){SendMsg(tcpClient, msg);return ReadMsg(tcpClient);}/// summary/// 默认自动回复异常捕捉/// /summary/// param nametcpClient/param/// param nametimeOut超时时间/param/// returns/returnspublic async Task AutoSendBack(TcpClient tcpClient, int timeOut 10 * 1000){//超时时间tcpClient.ReceiveTimeout timeOut;tcpClient.SendTimeout timeOut;while (true){try{if (!Clients.Contains(tcpClient)){throw new Exception(Tcp客户端已被移除!);}var receive ReadMsg(tcpClient);ShowMsg($TcpClient[{tcpClient.Client.RemoteEndPoint?.ToString()}]:收到数据{receive.Str});SendMsg(tcpClient, receive.Str);}catch (Exception ex){RemoveClient(tcpClient);ShowMsg(发送失败);ShowMsg(ex.Message);}}}}简单使用 //对tcpServeService进行了默认配置默认自动回复自动维护Client集合 TcpServeService tcpServeService new TcpServeService(192.168.100.21, 10003);//如果想要自定义回复需要覆盖AddClient_CallBack函数使用异步任务处理连接 //tcpServeService.AddClient_CallBack ((client) { // Task.Run(() // { // //你的客户端连接异步任务 // }); //});//如果想要打印在Winfrom/WPF的界面覆盖此回调 //tcpServeService.ShowMsg (msg) //{ // //你的消息打印函数 //}; //tcpServeService.Start(); tcpServeService.Start();运行结果
http://www.yutouwan.com/news/481633/

相关文章:

  • 网站开发需要多少钱价格网站备案 拍照网点
  • 佳木斯网站设计高品质的网站开发公
  • 站长素材音效下载美团先做网站还是app
  • 网站制作动黄岐网站制作
  • 北京 科技网站建设郑州电力高等专科学校招生办电话
  • 软件下载网站排行榜前十名网站显示备案号
  • 合肥网站制作价格建设官方网站企业登录入口
  • 做网站交接需要哪些权限代做网页设计作业
  • 房地产网站建设平台WordPress文章模板修改
  • 百度站长平台链接漫画交流网站怎么做
  • 怎么样建设个人网站wordpress媒体库分类
  • 做业务不花钱的网站有哪些系统开发的大概步骤
  • 张家界商城网站建设wordpress删除角色名
  • 小程序和网站开发难度谷歌优化排名哪家强
  • 做网站各个流程深圳网站搭建哪里找
  • 免费网站下载大全海南最新消息
  • php网站后台登陆不了应用公园制作app教程视频
  • 西北人才网深圳市企业网站seo点击软件
  • 创新的中山网站建设快速搭建网站后台
  • 搭建网站做淘宝客网站开发与维护是干什么的
  • 做网站之前要先购买服务器吗网站关键词优化应该怎么做
  • 手机网站是怎么制作的网站开发公司取名
  • 网站网站优化上海做什么工作最赚钱
  • 自己的公网ip可以做网站wordpress手机端怎么设置
  • 做网站运营很累吧wordpress活动插件
  • 网站建设情况报告国内欣赏电商设计的网站
  • 上海网站建设公司大全品牌高端网站
  • wordpress怎么修改中文字体企业网站优化服务公司
  • 甘肃网站快速排名策划去申请注册一个中视频自媒体账号
  • 吴忠住房和城乡建设局网站seo网络优化招聘信息