简单的TCPSocket客户端使用案例(已入OPCommon)

news/2024/11/28 11:01:29/

做一个实体操作工具类(包含)

public delegate void TcpClientReceivedEventHandler(TcpClientStateEventArgs args);public  class TCPSocketClient{ //接收委托public event TcpClientReceivedEventHandler TcpReceived;private CancellationTokenSource cts = new CancellationTokenSource();//public string _ip { get; set; }//public int _port { get; set; }//Socket socket = null;//Thread thread = null;public bool IsConnect = false;//控制回复/// <summary>/// /// </summary>/// <param name="ip"></param>/// <param name="port"></param>public TCPSocketClient(string ip, int port){_ip = ip;_port = port;}/// <summary>/// 打开链接/// </summary>public void Open(){socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse(_ip), _port);socket.Connect(endPoint);thread = new Thread(Receiver);thread.IsBackground = true;thread.Start();}/// <summary>/// 获取数据操作/// </summary>private void Receiver(){while (!cts.IsCancellationRequested){byte[] buffer = new byte[1024 * 1024];int length = socket.Receive(buffer);if (length > 0){byte[] b = new byte[length];Buffer.BlockCopy(buffer, 0, b, 0, length);TcpClientStateEventArgs args = new TcpClientStateEventArgs();args.buffer = b;TcpReceived.Invoke(args);}}}/// <summary>/// 发送bytes/// </summary>/// <param name="data"></param>public void Send(byte[] data){if (socket!=null ){socket.Send(data);}}/// <summary>/// 关闭当前链接/// </summary>public void Close(){IsConnect = false;if (socket!=null ){socket.Close();} thread.Abort();socket = null;thread = null;}}/// <summary>/// Tcp状态事件参数类/// </summary>public class TcpClientStateEventArgs : EventArgs{public byte[] buffer = null;}

然后简单的使用方法就是

  TCPSocketClient tcpClient = null;/// <summary>/// 其他测试/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void button2_Click(object sender, EventArgs e){if (BTSocket.Text.Equals("链接Socket")){BTSocket.Text = "断开";string ip = TBSocketIp.Text.Trim();int port = int.Parse(TBPort.Text.Trim());tcpClient = new TCPSocketClient(ip, port);tcpClient.Open();tcpClient.TcpReceived += TcpClient_TcpReceived;}else{BTSocket.Text = "链接Socket";tcpClient.Close();}}/// <summary>/// 接受数据/// </summary>/// <param name="args"></param>private void TcpClient_TcpReceived( TcpClientStateEventArgs args){string str = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff") + ":";str += Encoding.UTF8.GetString(args.buffer);this.Invoke(new Action(() =>{LBRemark.Text = str;}));}/// <summary>/// 发送/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void button2_Click_1(object sender, EventArgs e){byte[] Bytes = OPCommon.ConvertType.HexStringToByteArray(TBSend.Text);tcpClient.Send(Bytes);}

http://www.ppmy.cn/news/1550600.html

相关文章

shell完结

声明&#xff01; 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下&#xff0c;如涉及侵权马上删除文章&#xff0c;笔记只是方便各位师傅的学习和探讨&#xff0c;文章所提到的网站以及内容&#xff0c;只做学习交流&#xff0c;其他均与本人以及泷羽sec团队无关&a…

PyTorch基础学习03_数学运算自动微分

目录 一、数学运算 1、基本操作 2、三角函数 3、统计学函数 二、保存和加载 三、并行化 四、自动微分 1、相关概念 2、计算梯度 1.标量梯度计算 2.向量梯度计算 3.多标量梯度计算 4.多向量梯度计算 5.矩阵梯度计算 3、梯度上下文控制 1、梯度控制 2、梯度更新…

echarts使用示例

柱状图折线图 折柱混合&#xff1a;https://echarts.apache.org/examples/zh/editor.html?cmix-line-bar option {title:{show: true},tooltip: {trigger: axis,axisPointer: {type: cross,crossStyle: {color: #999}}},toolbox: {feature: {dataView: { show: true, readOnl…

Ubuntu20.04运行DM-VIO

目录 环境配置非ROS环境运行编译运行结果图 ROS环境参考 环境配置 Ubuntu20.04 将项目中Cmakelists.txt中C 和 opencv版本修改下 C 使用 14 opencv使用4 非ROS环境运行 编译 按照官网即可 cd dm-vio mkdir build cd build cmake .. make -j运行 DM-VIO给的命令是 bin/d…

在 JavaScript 中,将一个十进制字符串转为二进制的方法

在 JavaScript 中&#xff0c;可以使用以下几种方法将一个十进制字符串转为二进制&#xff1a; 方法一&#xff1a;使用 parseInt() 和 toString() 首先&#xff0c;使用 parseInt() 函数将十进制字符串转换为十进制整数。 parseInt() 函数会解析传入的字符串&#xff0c;并根…

firewalld防火墙阻止docker容器间通信的排查思路及解决方案

摘要 现有两个docker容器nginx、openjdk分别部署前后端服务&#xff0c;假设默认防火墙为firewalld&#xff0c;发现在默认配置下&#xff0c;本地直接curl后台服务器能正确响应&#xff0c;nginx的代理的请求proxy_pass无法得到后台服务器的响应&#xff0c;只得到502 BadGat…

[产品管理-156]:《领先的密码-BLM方法论全面解读与应用指南》- 全书概述

目录 前言&#xff1a; 一、BLM方法论概述 二、BLM方法论的核心要素 三、BLM方法论的应用指南 四、BLM方法论的实际应用案例 五、总结 前言&#xff1a; “领先的密码&#xff1a;BLM方法论全面解读与应用指南”这一主题涉及对Business Leadership Model&#xff08;业务…

DataWhale—PumpkinBook(TASK06神经网络)

课程开源地址及相关视频链接&#xff1a;&#xff08;当然这里也希望大家支持一下正版西瓜书和南瓜书图书&#xff0c;支持文睿、秦州等等致力于开源生态建设的大佬✿✿ヽ(▽)ノ✿&#xff09; Datawhale-学用 AI,从此开始 【吃瓜教程】《机器学习公式详解》&#xff08;南瓜…