网站首页  词典首页

请输入您要查询的论文:

 

标题 基于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下载服务。

 

Copyright © 2004-2023 puapp.net All Rights Reserved
更新时间:2025/5/23 1:06:25