基于C/S 模式与完成端口的路灯监控软件的设计
[10-10 20:38:44] 来源:http://www.88dzw.com 其它电路 阅读:8605次
文章摘要:3. 1. 3 工作线程除了工作在完成端口上的服务线程外,在关联套接字之前,还必须创建一个或多个工作线程,以便在I /O 请求投递给完成端口对象后,为完成端口提供服务。工作线程的个数取决于应用程序的总体设计情况。创建的工作线程由完成端口管理。当有I /O 完成通知到来,则由完成端口唤醒一个工作线程接收I /O 完成通知,并对其进行处理。完成端口自动对工作线程进行调度,唤醒哪个工作线程则由完成端口决定。若无I /O 完成通知,则所有的工作线程都在等待。根据经验,工作线程的数量一般为CPU 数量的两倍再加上2。3. 2 完成端口的程序实现网络通信模块通过CreateIoCompletionPort
基于C/S 模式与完成端口的路灯监控软件的设计,标签:电路设计,http://www.88dzw.com3. 1. 3 工作线程
除了工作在完成端口上的服务线程外,在关联套接字之前,还必须创建一个或多个工作线程,以便在I /O 请求投递给完成端口对象后,为完成端口提供服务。工作线程的个数取决于应用程序的总体设计情况。创建的工作线程由完成端口管理。当有I /O 完成通知到来,则由完成端口唤醒一个工作线程接收I /O 完成通知,并对其进行处理。完成端口自动对工作线程进行调度,唤醒哪个工作线程则由完成端口决定。若无I /O 完成通知,则所有的工作线程都在等待。根据经验,工作线程的数量一般为CPU 数量的两倍再加上2。
3. 2 完成端口的程序实现
网络通信模块通过CreateIoCompletionPort 函数创建完成端口对象,并将接收到的socket 对象与完成端口关联, 启动一定数量的工作线程, 通过GetQueuedCompletionStatus 函数获取完成端口上SOCKET 的当前状态,并将收到的数据从缓存出取出。完成端口的主要工作流程图如图2 所示。
图2 完成端口模块流程图
主线程:
1) 程序启动的时候,初始化网络并且创建完成端口句柄:
CompletionPort = CreateIoCompletionPort ( INVALID_ HANDLE_ VALUE,NULL,0,0);
2) 启动2* N + 2 个工作线程,N 为CPU 数量:
3) 进入一个*循环,开始*客户端连接请求;
4) 将接收到的客户端SOCKET 与完成端口对象绑定;
5) 发出一个异步的WSARecv 或是WSASend 操作,实际的接收和发送数据操作会由操作系统完成。
6) 重复以上3) 到5) 的操作。
工作线程:
1) 进入循环, 通过GetQueuedCompletionStatus函数, 从完成端口上取得WSASend /WSARecv 的操作结果:
2) 根据完成端口上I /O 状态, 进行数据的处理;
3) 提交一个新的WSASend /WSARecv 操作请求;
4) 重复以上1) 到4) 的操作。
3. 3 通信规约设计
整个监控系统采用TCP ( Transmission ControlProtocol,传输控制协议) 进行数据传输,在此基础上设计了一套监控系统规约,来完成服务端与远程终端,服务端与客户端的通信。根据路灯监控的实际需求,数据报文包括以下几种形式。
1) 远程终端主动向软件服务端发送的连接认证数据报文,如表1 所示。
表1 连接认证数据报文格式
2) 远程终端定时向软件服务端发送的现场数据报文,主要包括路灯监控现场采集到的电流,电压,温度,开关状态,报警信息等数据信息,如表2 所示。
3) 软件客户端发送给服务端, 并由服务端转发到相应远程终端的参数设置报文,根据不同的功能号,报文发送不同的参数信息,包括开关灯时间,报警阀值,数据采集周期等如表3 所示。
《基于C/S 模式与完成端口的路灯监控软件的设计》相关文章
- › 基于Camera Link接口的图像跟踪系统的设计
- › 基于CC2480的Zigbee无线水表自动抄表系统研究与设计
- › 基于CDMA的无线网络视频监控系统的设计
- › 基于CS5463的新型多功能电能表电路设计
- › 基于CS5460A芯片的电网电流表设计
- › 基于C8051F040的车用CAN总线智能节点设计
- 在百度中搜索相关文章:基于C/S 模式与完成端口的路灯监控软件的设计
- 在谷歌中搜索相关文章:基于C/S 模式与完成端口的路灯监控软件的设计
- 在soso中搜索相关文章:基于C/S 模式与完成端口的路灯监控软件的设计
- 在搜狗中搜索相关文章:基于C/S 模式与完成端口的路灯监控软件的设计