标题 | 基于Sockets通信的临床设备监控的设计实现 |
范文 | 陈庭峰 摘要:为了方便管理与维修临床信息设备,该文设计出一套用于临床信息设备监控的软件。通过运用C#编程技术和Sockets通信技术,采用Client/Server的通讯模型,实现了监控方法。通过实践验证,该临床设备监控软件不仅适用而且方便、高效。 关键词:设备监控;Sockets;Server;Client 中图分类号:TP311 ? ? ? ?文献标识码:A 文章编号:1009-3044(2020)28-0056-02 Abstract:in order to facilitate the management and maintenance of clinical information equipment, a set of software for clinical information equipment monitoring is designed. By using the C # programming technology and sockets communication technology, using the communication model of client/server, the monitoring method is realized. Through the practice verification, the clinical equipment monitoring software is not only applicable, but also convenient and efficient. Key words: equipment monitoring; Sockets;Server;Client 近幾年,医院基本实现病历电子化的看病模式,就诊、用药记录等信息都存档于计算机。信息化发展带来了诸多便利,但是问题是信息设备宕机,损坏等情况不可避免,为了能实时了解设备使用状况,设计出能够动态观察临床设备的运行状况软件就必不可少。本文主要介绍对于计算机和打印机的监控。 1 Socket技术特点 所谓Socket通常也称作“套接字”,实现服务器和客户端之间的物理连接,并进行数据传输,主要有UDP和TCP两个协议[1]。Socket处于网络协议的传输层。 UDP协议:广播式数据传输,不进行数据验证。 TCP协议:传输控制协议,一种面向连接的协议,给用户进程提供可靠的全双工的字节流。优点很多:(1)数据量小;(2)传输数据时间短、性能高;(3)适合于客户端和服务器端之间信息实时交互;(4)可以加密且数据安全性强。 2 Windows下Socket的设计模式 临床护理设备监控主要采用Client/Server的通讯模型[2],设置服务器端和客户端两部分,数据结构设置主机信息模块和打印机信息模块两部分,通过Socket实现实时传输。 服务器和客户端的通讯的前提是唯一标志的进程,由于IP层的IP地址可以唯一标志主机,TCP层协议和端口可以唯一标志主机的一个进程,就可以利用IP地址加协议加端口号唯一标志网络中的进程[3]。所以本软件通过基于5588端口加IP地址和使用Socket通信协议来设计实现。 3具体设计实现 3.1服务器端设计 服务器端的接收数据模式如下[4]:(1)服务器监听并读取来自客户端的Xml数据包;(2)接收数据(如接受不成功则断开socket连接,继续监听);(3)分析提取数据,数据异常推送报警;(4)数据分别存入主机信息Xml数据库和打印机信息Xml数据库中。 3.2服务器端实现 第一步:创建一个用于监听连接的Socket对象; private Socket serverSocket; 第二步:用指定的5588端口号和服务器的ip建立一个对象; private static String IP = “192.0.0.202”; private static int Port = 5588; 第三步:用socket对象的Bind()方法绑定对象; serverSocket.Bind(new serverSocket(IPAddress.Parse(IP), Port)); 第四步:用Socket对象的Listen()方法开始监听; serverSocket.Listen(0); 第五步:接收到客户端的连接,用Socket对象的Accept()方法创建一个新的用于和客户端进行通信的Socket对象; Socket NewClientSocket = serverSocket.Accept(); 第六步:接受来自客户端的Xml数据,存入并提取服务器端的ClientXml和PrintXml数据库。提取数据,以ClientXml数据库为例代码如下: FileStream fs = new FileStream("C:/ClientXml.xml", FileMode.Create, FileAccess.Write); fs.Write(msgByte, 0, msgByte.Length); fs.Close(); ClientData data; XmlSerializer serializer = new XmlSerializer(typeof(ClientData)); using (StreamReaderstreamReader = File.OpenText("C:/ClientXml.xml")) { data = serializer.Deserialize(streamReader) as ClientData; } ClientDate.ClientIP= data.ClientIP; ClientDate.ClientName= data.ClientName; ClientDate.CPUTempState = data.CPUTempState; 第七步:通信结束关闭socket。 3.3服务器端界面设计 设计界面分为历史数据图、主机列表图和报警界面三部分。 3.3.1展示数据 图表分为历史曲线图表和主机列表图两大块,对比之前的历史数据实时刷新,动态展示数据信息。 3.3.2报警机制 提取异常数据,推送至报警界面,当数据正常后取消报警。 3.4客户端设计 客户端数据模块分为主机信息模块和打印机信息模块两部分,利用多线程传输数据。 具体设计流程:(1)监测获取主机和设备数据;(2)封装数据存入Xml数据库;(3)实时发送Xml数据包给服务器。 3.4.1主机信息模块 主机信息模块数据包格式主要分为Time、客户机标识、CPU状态和内存状态四部分。Time表示时间,客户机标识表示包括IP地址和主机名两部分,CPU状态包括CPU温度和CPU使用率两部分,内存状态包括内存使用率和内存进程数两部分,具体数据结构设计采用封装类的方式,定义ClientDate类,设置Client对象,包含Time、ClientIP、ClientName、CPUState和MemoryState等字段,具体代码如下: public class ClientDate { public string Time{ get; set; } public string ClientIP{ get; set; } public string ClientName{ get; set; } public string CPUTempState{ get; set; } public string MemoryState{ get; set; } public string CPUUsage{ get; set; } public string MemoryUsage{ get; set; } } CPU运行状态标识:1表示温度正常,0表示温度异常;内存运行状态标识:1表示正常,0表示异常。 3.4.2打印机信息模块 打印机信息模块数据包格式主要分为Time、客户机标识、打印机状态三部分。Time表示时间,客户机标识包括IP地址和主机名两部分,打印机状态包括卡纸、缺纸、正常和脱机四部分,具体数据结构设计也是采用封装类的方式,定义PrintDate类,设置Print对象,包括Time,ClientIP、ClientName和PrintState等字段,具體代码如下: public class PrintDate { public string Time{ get; set; } public string ClientIP{ get; set; } public string ClientName{ get; set; } public string PrintState{ get; set; } } 打印机状态标识:0表示正常,1表示脱机,2表示卡纸,3表示缺纸[5]。 3.5客户端实现 在发送数据给服务器之前,客户端每10秒钟更新获取一次连接主机信息和打印机信息,分别更新存入ClientXml和PrintXml数据库中并且发送数据至服务器。发送数据流程如下所示[6]: 第一步:建立一个Socket对象; public Socket clientSocket; 第二步:用指定的5588端口号和服务器的ip建立一个clientSocke对象; private static String IP = "192.0.0.202";private static int Port = 5588; 第三步:用Socket对象的Connect()方法以上面建立的clientSocke对象作为参数,向服务器发出连接请求; clientSocket.Connect(ip,port); 第四步:如果连接成功,就用Socket对象的Send()方法向服务器发送Xml信息。以发送主机信息数据ClientXml为例,代码如下: try { clientSocket.Send(FileTOByte(ClientXml)); } catch { MessageBox.Show("发送数据失败"); } 第六步:通信结束关闭Socket。 4 结束语 本文设计并且实现了临床护理设备监控系统。该软件使用效果俱佳,受到了临床工作人员的一致好评。由于该软件是基于Sockets通信技术下实现,所以无法监控单机设备,就需要定期查看和维护单机设备。在今后的设计研究中,将重点解决一下问题:实现消息机制和广播机制,满足更多设备监控需求。 参考文献: [1] 王广伟,李维钊,曲铭海.Windows Sockets网络编程[J].计算机应用研究,2000,17(8):51-54. [2] 周广全,杨学良,张姝,等.基于SOCKETS的EDI通信平台的研究与实现[J].计算机研究与发展,1998,35(10):3-5. [3] 何进,谢松巍.基于Socket的TCP/IP网络通讯模式研究[J].计算机应用研究,2001,18(8):134-135. [4] 黄显信.利用SOCKET通信进程实现不同数据库间数据的同步[J].计算机与数字工程,2003,31(5):28-30,57. [5] 原小艳,朱强.基于Sockets通信的实时设备监控系统[J].电脑知识与技术,2005,1(30):58-59. [6] 罗亚非.基于TCP的Socket多线程通信[J].电脑知识与技术,2009,5(3):563-565,598. 【通联编辑:代影】 |
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。