C#中HP-Socket通信组件详解

概念

HP-Socket 是国产的TCP、UDP和HTTP 通信框架,包含服务端、客户端和 Agent 组件,提供 C/C++、C#、Java、Python 等多种编程语言接口。
与传统TCP通讯区别的是HP-Socket 对通信层做到了完全封装,程序不必关注通信层的任何细节;HP-Socket提供基于事件通知模型的 API 接口,能简单高效地整合到新旧应用程序中。

示例

        TcpServer hpServer;bool tcp1State = false;public Form1(){InitializeComponent();}enum PlcPort{Op1 = 4000,}private void Form1_Load(object sender, EventArgs e){hpServer = new TcpServer();hpServer.OnPrepareListen += OnPrepareListen;hpServer.OnAccept += OnAccept; //连接事件hpServer.OnClose += OnClose;   //断开连接事件hpServer.OnReceive += OnReceive;// 接收数据hpServer.OnSend += OnSend;// 发送数据hpServer.Address = "127.0.0.1";// 设置服务端IPhpServer.Port = Convert.ToUInt16(PlcPort.Op1);// 设置端口hpServer.SendPolicy = SendPolicy.Direct;hpServer.Start();ReportMsg("服务端已开启并监听");}private HandleResult OnPrepareListen(IServer sender, IntPtr listen){return HandleResult.Ok;}private HandleResult OnAccept(IServer sender, IntPtr connId, IntPtr client){// 获取客户端地址if (!sender.GetRemoteAddress(connId, out var ip, out var port)){return HandleResult.Error;}return HandleResult.Ok;}//服务器收到数据private HandleResult OnReceive(IServer sender, IntPtr connId, byte[] data){try{                return HandleResult.Ok;}catch (Exception){return HandleResult.Ignore;}}private HandleResult OnSend(IServer sender, IntPtr connId, byte[] data){try{return HandleResult.Ok;}catch (Exception){return HandleResult.Ignore;}}//服务器关闭连接private HandleResult OnClose(IServer sender, IntPtr connId, SocketOperation socketOperation, int errorCode){return HandleResult.Ok;}//服务器关闭private HandleResult OnShutdown(IServer sender){return HandleResult.Ok;}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/256247.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mail发送的内容显示为附件的解决办法

利用命令: cat data.mail | mail -v -s "mail test" xxxqq.com 发送的内容在收件箱中显示为附件tcmimi.xxx.bin. 这是因为mail期望文件输入的是unix格式的文本,也就是说换行符使用\n而不是\r\n,如果文本中包含\r(使用set list,显示为^M),这种情况下mail会认为该文件…

【图像处理】——Python+opencv实现二值图像的轮廓边界跟踪以及轮廓面积周长的求解(findcontours函数和contourArea函数)

目录 一、函数 cv.findContours 二、轮廓层级(返回参数hierarchy) 三、轮廓寻找方式 1. RETR_LIST 2. RETR_TREE

基于C#的ico图标制作与应用

一、简介 ICO是什么 ICO 是 Windows 开发的一种图标格式,是一种可以存储多张图案、多尺寸、多色板的图标文件。 一般用IcoFX软件来创建或修改ico文件。 点击下载 Ico文件创建与应用 1.单击打开按钮,选择一个图像文件,确定后一般出现以下…

第5章--高级数据管理

5.1 数值和字符处理函数 常用的数学函数 统计函数 例子&#xff1a; > x <- c(1,2,3,4,5,6,7,8) > mean(x) [1] 4.5 > sd(x) [1] 2.44949 默认情况下&#xff0c;函数scale()对矩阵或数据框的指定列进行均值为0、标准差为1的标准化&#xff1a; newdata <- scal…

在思科无线控制器上查看5GHz和2.4GHz的客户端数量

在图形界面下找了好长时间也没有看到在哪里&#xff0c;在CLI界面下找到了相应的命令&#xff0c;命令如下&#xff1a; (Cisco Controller) >show client ap 802.11a allMAC Address AP Id Status WLAN Id Authenticated ----------------- ------ -…

【图像处理】——实现二值图像的轮廓边界跟踪以及轮廓面积周长的求解(connectedComponentsWithStats()函数和connectedComponents()函数)

目录 一、cv2.connectedComponents() 函数原型: 输入参数解析: 返回参数解析: 二、cv2.connectedC

Halcon阈值分割方法简析

1. 基于直方图的自动阈值分割 1.1 关键算子 auto_threshold(Image : Regions : Sigma : )&#xff1a;使用多阈值分割单通道图像。 首先&#xff0c;计算图像的灰度直方图。 然后&#xff0c;使用标准差为Sigma的一维高斯滤波器对直方图进行滤波。 进而&#xff0c;从直方图中…

GSM BTS Hacking: 利用BladeRF和开源BTS 5搭建基站

GSM BTS Hacking: 利用BladeRF和开源BTS 5搭建基站 引文 如果你已经购买了Nuand&#xff08;官方&#xff09;BladeRF x40&#xff0c;那么就可以在上面运行OpenBTS并可以输入一些指令来完成一些任务。一般来说HackRF&#xff0c;是一款覆盖频率最宽的SDR板卡。它几乎所有的信息…

夜深人静,想规划一下短期

截止写到这里的时候&#xff0c;已经是农历的十一月初六了&#xff0c;算算时间&#xff0c;距离过年也不太遥远了。就只有短短50多天左右。 很多事想做没有时间&#xff0c;很多程序要改&#xff0c;没有时间&#xff1b;很多想法想付诸行动&#xff0c;总是半途而废。时间久这…

【图像处理】——Python+opencv实现提取图像的几何特征(面积、周长、细长度、区间占空比、重心、不变矩等)

转载请注明详细地址本文简单介绍了图像常见几何特征的概念以及求解方法本文介绍了Python和opencv求解几何特征的常用方法目录 其他形状外接轮廓的方法可以参考:《OpenCV-Python——第17.3章:轮廓形状拟合(边界矩形,最小外接圆...)及性质》 一、获得轮廓 二、面积 1、c…

Linux 中断处理浅析

最近在研究异步消息处理, 突然想起linux内核的中断处理, 里面由始至终都贯穿着”重要的事马上做, 不重要的事推后做”的异步处理思想. 于是整理一下~第一阶段&#xff0d;&#xff0d;获取中断号每个CPU都有响应中断的能力, 每个CPU响应中断时都走相同的流程. 这个流程就是内核…

C#中泛型的相关知识点总结

一、概念 1.1 泛型 泛型是什么&#xff1f; 书本告诉我们泛型是通过通过参数化类型的方法在同一份代码上对多种数据类型进行调用。也即是说&#xff0c;如果同一个代码需要使用不同的数据类型的话就可以定义一个泛型的类或者方法。 泛型的优点是什么&#xff1f; 1.通过使用…

用scikit-learn研究局部线性嵌入(LLE)

1. scikit-learn流形学习库概述 在scikit-learn中&#xff0c;流形学习库在sklearn.manifold包中。里面实现的流形学习算法有&#xff1a; 1&#xff09;多维尺度变换MDS算法&#xff1a;这个对应的类是MDS。MDS算法希望在降维时在高维里样本之间的欧式距离关系在低维可以得到保…

判断字符串中是否为数字的三种方法

//1用JAVA自带的函数 public static boolean isNumeric(String str){for (int i str.length();--i>0;){ if (!Character.isDigit(str.charAt(i))){return false;}}return true;}//2用正则表达式 public static boolean isNumeric(String str){ Pattern pattern Pattern.…

【图像处理】——Python+opencv实现图像的hu不变矩特征提取(含原理、推导过程、应用、代码等)

目录 转载本文请注明详细地址本文介绍了矩和图像矩的含义本文介绍了不变矩的计算、应用本文介绍了如何计算图像相似度一、思维导图 二、普通矩的定义 1、零阶矩 2、二阶矩

MSSQL-to-MySQL v5.3, 从MSSQL迁移到mySQL的最佳工具

将现有的MSSQL数据库迁移到MySQL数据库,尝试了很多种工具 MySQL Workbench / MSSQL to MySQL Export / DB Converter / openDBcopy 都有这样那样的问题。 最后发现就MSSQL-to-MySQL好一点&#xff0c;能够保证所有表和数据成功迁移&#xff0c;并且字段类型都比较正确。 只是对…

C#窗体应用程序崩溃解决方法总结

一、内存不足 内存是最常见的导致程序崩毁的原因&#xff0c;常用解决方式有如下几种。 算法中声明的占内存较大的全局变量或类中声明的私有变量在循环或运行结束后需进行释放&#xff0c;手动设置Dispose()&#xff0c;然后GC.Collect()。对一些重复调用的类避免多次实例化。…

【学习的心得】——“快餐”的效率与“挖掘”的重要性

从事Python图像处理和机器学习方向已经有大半年了&#xff0c;现在作为还是一个研究生的我&#xff0c;大部分时间都是在完成老师给的课题任务&#xff0c;但是这几个月下来我感觉和老师的意见有点分歧了甚至跟一些同学都有所意见分歧了。 Python虽然是最近几年火起来的语言&a…

Unity3D Input按键系统

默认输入轴&#xff1a; Horizontal 和 Vertical被映射到w, a, s, d键和方向键 Fire1, Fire2, Fire3被分别映射到Ctrl&#xff0c;Option&#xff08;Alt&#xff09;和Command键 Mouse X 和 Mouse Y被映射到鼠标移动增量 Window Shake X 和 Window Shake Y 被映射到窗口的移动…

iOS app 企业内部发布及HTTPS服务器配置

转自: http://www.cnblogs.com/cocoajin/p/4082488.html iOS企业内部发布及HTTPS服务器配置 一&#xff1a;所需的条件 1. 苹果开发者证书&#xff0c;企业版 299$ 版本 2. ssl 证书&#xff0c;即https使用的服务器证书 3. web服务器&#xff0c;支持https 4. 一个域名&#x…