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

不用开源做网站百度客服电话人工服务热线

不用开源做网站,百度客服电话人工服务热线,做网站怎么买服务器,电子商务如何做网站销售C#里创建一个TCP客户端连接类 TCP客户端,一般分为两种,一种是同步收发数据,这种需要开发线程来处理。 如果连接比较多,就会消耗比较多线程。 另外一种,就是使用异步连接,这样只需要一个线程,就…

C#里创建一个TCP客户端连接类

TCP客户端,一般分为两种,一种是同步收发数据,这种需要开发线程来处理。
如果连接比较多,就会消耗比较多线程。
另外一种,就是使用异步连接,这样只需要一个线程,就可以连接很多个。

在这里使用异步的方式来连接,例子的代码如下:
 

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;namespace ModbusTCP.Modbus
{class MyTcp : TcpClient{public delegate void Connect_Resp(); //声明委托public delegate void Recv_Resp(byte[] data); //声明委托private Connect_Resp _ConnectSucces;private Connect_Resp _ConnectFail;private Recv_Resp _Recv_Resp;public event Action _SendSuccess;public event Action _SendFail;internal class StateObject{public TcpClient client = null;public int totalBytesRead = 0;public const int BufferSize = 1024;public string readType = null;public byte[] buffer = new byte[BufferSize];public StringBuilder messageBuffer = new StringBuilder();}public string ErrorString { get; set; }public MyTcp(Connect_Resp con_succes, Connect_Resp con_fail, Recv_Resp recv){_ConnectSucces = con_succes;_ConnectFail = con_fail;_Recv_Resp = recv;}public void ClientConnect(string strIP, int port){BeginConnect(strIP, port, new AsyncCallback(ConnectCallback), this);}public virtual void ConnectCallback(IAsyncResult ar){MyTcp t = (MyTcp)ar.AsyncState;try{if (t != null && t.Client != null){t.EndConnect(ar);if (t.Connected){OnConnectSuccess(t);}else{OnConnectFailure("连接失败");}}else{OnConnectFailure("连接对象为空");}}catch (SocketException se){OnConnectFailure($"连接发生套接字错误: {se.SocketErrorCode} - {se.Message}");}catch (Exception ex){OnConnectFailure($"连接发生未知错误: {ex.Message}");}}private void OnConnectSuccess(MyTcp tcpClient){_ConnectSucces?.Invoke();AsyncRead(tcpClient);}private void OnConnectFailure(string errorMessage){ErrorString = errorMessage;_ConnectFail?.Invoke();}/// <summary>/// 异步读TCP数据/// </summary>/// <param name="sock"></param>private void AsyncRead(MyTcp sock){StateObject state = new StateObject{client = sock};NetworkStream stream = sock.GetStream();if (stream.CanRead){try{IAsyncResult ar = stream.BeginRead(state.buffer, 0, StateObject.BufferSize,new AsyncCallback(TCPReadCallBack), state);}catch (Exception e){ErrorString = "Network IO problem " + e.ToString();_ConnectFail?.Invoke();}}}/// <summary>/// TCP读数据的回调函数/// </summary>/// <param name="ar"></param>private void TCPReadCallBack(IAsyncResult ar){StateObject state = (StateObject)ar.AsyncState;//主动断开时if ((state.client == null) || (!state.client.Connected))return;NetworkStream nas = state.client.GetStream();try{int numberOfBytesRead = nas.EndRead(ar);if (numberOfBytesRead > 0){state.totalBytesRead += numberOfBytesRead;byte[] dd = new byte[numberOfBytesRead];Array.Copy(state.buffer, 0, dd, 0, numberOfBytesRead);//接收数据_Recv_Resp?.Invoke(dd);nas.BeginRead(state.buffer, 0, StateObject.BufferSize,new AsyncCallback(TCPReadCallBack), state);}else{//被动断开时 nas.Close();state.client.Close();nas = null;state = null;_ConnectFail?.Invoke();}}catch (Exception){nas = null;state = null;_ConnectFail?.Invoke();}}public void Send(byte[] buffer, int offset, int size){NetworkStream stream = GetStream();if (stream.CanWrite){stream.BeginWrite(buffer, offset, size, new AsyncCallback(TCPSendCallBack), this);}}private void TCPSendCallBack(IAsyncResult ar){try{MyTcp tcp = (MyTcp)ar.AsyncState;NetworkStream stream = tcp.GetStream();stream.EndWrite(ar);_SendSuccess?.Invoke();}catch (Exception ex){ErrorString = $"发送数据时发生错误: {ex.Message}";_SendFail?.Invoke();}}//组合两个缓冲区的数据,并产生一个新的缓冲区返回public static byte[] CombineBytes(byte[] firstBytes, int firstIndex, int firstLength,byte[] secondBytes, int secondIndex, int secondLength){MemoryStream ms = new MemoryStream();ms.Write(firstBytes, firstIndex, firstLength);ms.Write(secondBytes, secondIndex, secondLength);byte[] bytes = ms.ToArray();ms.Close();return bytes;}}
}

http://www.dtcms.com/wzjs/208755.html

相关文章:

  • 做拍客哪个网站好百度推广代理公司广州
  • html5搭建网页游戏自己的网站怎么样推广优化
  • 想开广告图文店在哪学广州seo优化排名公司
  • 建设工程规范发布网站网络营销与直播电商
  • 洛阳制作网站公司吗济南优化哪家好
  • dw做网站时怎么改为绝对路径网站优化排名资源
  • 简述建设网站的具体步骤中国网评中国网评
  • 请兼职做企业网站设计怎么收费国外电商平台有哪些
  • 文化传媒网站建设武汉做网页推广公司
  • 好看企业官网源码淘宝关键词排名优化技巧
  • 太原百度推广开户seo的搜索排名影响因素有
  • 用别人的二级域名做网站seo都用在哪些网站
  • 做赚钱网站百度无锡营销中心
  • 什么是网络营销工程师整站seo
  • 独立站和公司网站的区别进一步优化营商环境
  • 网站流量监控怎么做营销型企业网站有哪些平台
  • php网站开发程序员大连网络营销seo
  • 制作图网 专业图片在线制作网站百度营销平台
  • 网站开发联系人国强百度搜索开放平台
  • 高度重视局门户网站建设百度广告电话号码
  • 网站 一般 用什么空间美工培训
  • pbootcms模板免费下载seo搜索是什么
  • 手机网站用什么软件做的自助建站系统开发
  • 中山做百度网站的公司名称百度关键词热度
  • 网站做好后网络营销课程培训课程
  • 护肤品网站建设需求分析广告公司名字
  • 蓝海网站建设热点新闻事件及评论
  • 提供中山精品网站建设网站制作代码
  • 山东省住房建设厅网站安全处个人对网络营销的看法
  • 国外网站做淘宝客茂名百度seo公司