您好,登录后才能下订单哦!
这篇文章主要介绍“ServerSuperIO单例通讯模式开发的方法是什么”,在日常操作中,相信很多人在ServerSuperIO单例通讯模式开发的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”ServerSuperIO单例通讯模式开发的方法是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
单例通讯模式只适用于网络通讯,并且只能增加一个“设备驱动”,这里“设备驱动”是逻辑概念,代表了所有设备或传感器,也就是说所有接到的数据全部分发给这个“设备驱动”。
只有网络通讯时可以使用这种控制模式。在一个服务实例内只能有一个设备驱动,相当于一个设备驱动对应着N多个硬件设备终端。更适合通讯的数据协议有固定的标准,以命令关键字处理不同的数据。适用于高并发的硬件终端设备主动上传数据,服务器端根据数据信息进行处理和返回相应的数据。
通讯结构如下图:
单例模式的设备驱动开发更简单,如果业务不复杂,那么只涉及到初始化参数、实时数据、协议,以及数据的处理逻辑,更高级的应用会涉及到协议数据过滤(IReceiveFilter接口)、数据转发(IService接口)、数据视图展示(IGraphicsShow接口)等,将在后续的文章中逐一进行介绍。
sta
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | static
void
Main(
string
[] args) {
//55 AA 00 61 43 7A 00 00 43 B4 15 0D
DeviceSingletonDriver dev1 =
new
DeviceSingletonDriver();
dev1.DeviceParameter.DeviceName =
"网络设备"
;
dev1.DeviceParameter.DeviceAddr = 0;
dev1.DeviceParameter.DeviceID =
"0"
;
dev1.DeviceDynamic.DeviceID =
"0"
;
dev1.DeviceParameter.DeviceCode =
"0"
;
dev1.DeviceParameter.NET.RemoteIP =
"127.0.0.1"
;
dev1.DeviceParameter.NET.RemotePort = 9600;
dev1.CommunicateType = CommunicateType.NET;
dev1.Initialize(
"0"
);
IServer server =
new
ServerManager().CreateServer(
new
ServerConfig()
{
ServerName =
"单例服务"
,
NetReceiveBufferSize = 1024,
ControlMode = ControlMode.Singleton,
MaxConnects = 4000
});
server.AddDeviceCompleted += server_AddDeviceCompleted;
server.DeleteDeviceCompleted += server_DeleteDeviceCompleted;
server.SocketConnected+=server_SocketConnected;
server.SocketClosed+=server_SocketClosed;
server.Start();
server.AddDevice(dev1);
while
(
"exit"
== Console.ReadLine())
{
server.Stop();
} } |
ControlMode = ControlMode.Singleton设置成单位模式就可以了。
在本机跑过10000万个并发连接,用的jmeter,jmeter占用了1.4G左右的内存、90%多的CPU,我也不知道为什么这么耗资源,笔记本勉强还能工作。
现在模拟的是15个客户端,100毫秒发送一次数据,效果如下:
图片
到此,关于“ServerSuperIO单例通讯模式开发的方法是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。