电脑桌面
添加盘古文库-分享文档发现价值到电脑桌面
安装后可以在桌面快捷访问

编程管理网络设备论文

来源:文库作者:开心麻花2026-01-071

编程管理网络设备论文(精选8篇)

编程管理网络设备论文 第1篇

1 系统流程设计

系统依照医疗设备维修的周期进行设计。当医疗设备出现故障, 使用科室登录系统申请报修, 记录故障现象, 并给出故障处理响应级别, 提交后生成维修基础数据、显示待修状态, 系统自动给出报修提示, 通知维修科室处理, 维修工程师确认后, 记录显示修理状态, 故障排除后, 填写维修记录, 记录显示维修结束状态, 使用科室给出评价意见, 整个维修周期结束。系统工作流程, 见图1。

2 系统结构设计

系统各功能模块的设计主要基于医疗设备维修的各个环节, 主要包括设备报修、维修记录、保养提醒、报表统计、信息查询、保修管理、巡视记录等。系统结构体系, 见图2。

2.1 用户管理模块

根据使用人员角色的不同, 分配不同的使用权限, 如系统管理员、使用科室、维修人员、管理人员等。

2.2 设备管理模块

设备管理模块主要用来编辑设备的基本信息, 如设备的名称、型号、厂家等, 同时给每台设备设置唯一编码, 设备的维修、保养、保修等内容都通过该编码进行管理, 便于日后查询以及数据统计。

2.3 信息查询模块

该功能模块可以实现在维修记录里按设备名称、设备型号、使用科室、维修时间、维修人员等进行查询, 当医疗设备发生故障时, 维修人员快速查阅相关记录, 参考相似故障处理方法, 可以提高故障的处理效率。同时, 使用人员也可以通过查看设备的维修资料, 以加强设备相关方面的维护与保养。

2.4 报表统计模块

通过报表统计模块, 设备管理人员可以按照单个设备、设备类别、使用科室、时间段等来统计设备发生故障的次数、维修费用等信息。

2.5 保修管理模块

每台医疗设备购置时都有一定的保修期, 通过该模块可以设定保修期期限, 并提前给出报警提示, 便于重要设备办理延保手续。同时, 在设备报修申请单上显示是否在保修期内, 如果设备属于保修期内, 联系厂家维修, 否则维修人员进行维修[4]。

2.6 保养管理模块

医疗设备的维修方式通常分为事后维修、预防性维修[5]。本模块主要针对预防性维修, 根据医疗设备的使用频率, 以及设备自身的维护保养要求, 通过保养提醒模块设置保养周期, 提前给出报警提示, 通知设备维护人员, 确认报警后, 自动生成保养记录单。

2.7 设备报修模块

当医疗设备出现故障时, 登录系统, 选择设备保修菜单, 系统生成设备报修申请单, 包括申报日期、申报科室、设备编码、故障现象等内容。

2.8 维修记录模块

维修人员登录系统, 确认设备报修申请后, 自动生成维修记录单, 内容包括:维修开始和结束时间、故障原因、维修内容、维修费用、更换物件, 维修人员、设备名称、设备型号、设备厂家及联系方式、设备保修情况等, 为日常学习提供资料, 以防日后发生类似的状况[6]。

2.9 维修评价模块

当工程师处理设备故障结束并提交维修记录单后, 系统生成维修评价表, 并在设备使用人员的系统界面给出报警提示, 设备使用科室根据维修情况给出评价并确认维修结束, 数据可以作为维修人员的业绩考核参考。

3 系统的开发

3.1 运行环境

系统在微软的Windows 2000系统和Windows XP系统下均可工作, IIS是执行ASP的环境[7], 要正确配置好IIS服务。

3.2 开发工具

系统采用ASP网络语言编写, ASP是微软公司开发的一种应用, 它可以与数据库和其它程序进行交互, 是一种简单、方便的编程工具, 可以开发出动态交互性极强的网络系统。因为数据量不大, 我们采用微软的ACCESS数据库, 便于安装维护, 降低成本。

3.3 部分源代码介绍

软件系统的操作基本都需要与数据库进行传输数据, 为了减少代码的编写, 把ASP与数据库的连接代码编写成独立文件, 命名为conn.asp, 以便其他文件调用。部分代码如下:

当有文件需要操作数据库时, 只要在该文件的代码起始处添加:语句, 即可进行数据库相关操作, 避免数据库连接代码重复编写。

保修管理模块是针对每台设备的保修期限进行预警, 当设备保修期快结束时, 系统给出报警提示, 提醒对重要设备的延保等处理工作。部分代码如下:

4 结语

通过使用医疗设备管理系统, 方便了对医疗设备的维修管理[8], 使医疗设备维修管理更加规范化, 降低设备维修成本, 大幅提升设备的维修效率和质量。同时, 医院管理人员更加透明地了解医疗设备的运行情况, 为今后医疗设备的采购提供有力依据。

摘要:目的 设计一套医疗设备维修管理系统, 加强医疗设备维修管理。方法 应用现有的网络资源, 依托ACCESS数据库, 选用B/S架构、使用ASP编程, 开发医疗设备维修管理系统。结果 系统实现了医疗设备维修网络化管理, 优化了维修操作流程, 满足了医院设备维修管理需求。结论 系统的应用提高了医疗设备维修的工作效率和管理水平。

关键词:医院信息系统,医疗设备维修管理,ASP编程,网络化管理

参考文献

[1]张文才, 冉建鹏, 谢京启.浅谈医学工程科设备报修系统开发工具的选择[J].医疗装备, 2010, 23 (7) :83.

[2]朱彤辉.使用VB开发医疗设备维修管理系统[J].中国医疗设备, 2011, 26 (4) :40-42.

[3]冉建鹏, 任春海, 谢京启.医学工程科设备报修系统的开发与应用[J].医疗装备, 2010, 23 (5) :35-36.

[4]曾立.医院综合维修管理系统的设计与应用[J].中国医疗器械杂志, 2011, 35 (2) :117-118.

[5]童斌.医疗设备维修管理的几点问题与对策[J].医疗卫生装备, 2010, 31 (1) :91-92.

[6]刘文, 李敏燕.浅谈医疗设备管理[J].现代医学仪器与应用, 2007, 19 (4) :37-39.

[7]粱丽.在Windows XP环境下配置IIS[J].数字技术与应用, 2010, (10) :120.

网络编程实验报告 第2篇

一、预备知识

1.网络编程基本概念

网络上的计算机间的通讯,实质上是网络中不同主机上的程序之间的通讯。在互联网中使用IP地址来标识不同的主机,在网络协议中使用端口号来标识主机上不同进程,即使用(IP地址,端口号)二元组。

套接字(Socket)用于描述IP地址和端口,是一个通信链的句柄,通信时一个网络程序将要传输的一段信息写入它所在主机的Socket中,该Socket通过与网络接口卡相连的传输介质将这段信息发送到另一台主机的Socket中,以供其他程序使用。

图1-1 TCP通信流程 2.TCP通信流程

TCP程序是面向连接的,程序运行后,服务器一直处于监听状态,客户端与服务器通信之前必须首先发起连接请求,由服务器接收请求并在双方之间建立连接后才可以互相通信。

二、实验目的

1.了解Winsock API编程原理; 2.掌握TCP Socket程序的编写; 3.了解C/S模式的特点; 4.学会解决实验中遇到的问题。

三、实验任务

使用Winsock API相关类实现TCP Socket通信程序,并能成功运行。

四、实验环境及工具

1.Windows2000/XP/7 2.Visual C++开发平台 3.Visual Studio2010

五、实验内容和步骤

参照《Visual C++网络编程教程》书中81页,TCP Socket API程序设计。连接:

void CChatClientDlg::OnConnect(){

WSADATA wsd;

//WSADATA结构

WSAStartup(MAKEWORD(2,2),&wsd);

//加载协议,使用Winsock 2.2版

m_client = socket(AF_INET,SOCK_STREAM,0);//创建流式套接字

//服务器地址

sockaddr_in serveraddr;

UpdateData();

if(ServerIP.IsBlank())

{

AfxMessageBox(“请指定服务器IP!”);

return;

}

if(sPort.IsEmpty())

{

AfxMessageBox(“请指定端口!”);

return;

}

//获取服务器进程的IP和端口

BYTE nFild[4];

CString sIP;

ServerIP.GetAddress(nFild[0],nFild[1],nFild[2],nFild[3]);

sIP.Format(“%d.%d.%d.%d”,nFild[0],nFild[1],nFild[2],nFild[3]);

//设置服务器地址结构的内容

serveraddr.sin_family = AF_INET;

serveraddr.sin_addr.S_un.S_addr = inet_addr(sIP);

serveraddr.sin_port = htons(atoi(sPort));

//发起连接须指明要访问的服务器进程地址,这个地址存储在serveraddr中

if(connect(m_client,(sockaddr*)&serveraddr,sizeof(serveraddr))!= 0)

{

MessageBox(“连接失败”);

return;

}

else

{

m_ListWords.AddString(“连接服务器成功!”);

m_ListWords.SetTopIndex(m_ListWords.GetCount()1);

ServerIP.EnableWindow();

ServerPort.EnableWindow();

m_ButtonConnect.EnableWindow();

m_ButtonDisconnect.EnableWindow(false);

m_EditWords.EnableWindow(false);

m_ButtonSend.EnableWindow(false);

m_ButtonExit.EnableWindow();}

“发送”按钮事件过程代码如下:

void CChatClientDlg::OnSend(){

//向服务器发送信息

UpdateData();

if(m_sWords.IsEmpty())

{

AfxMessageBox(“发送的消息不能为空!”);

return;

}

//开始发送数据

int i = send(m_client,m_sWords.GetBuffer(0),m_sWords.GetLength(),0);

m_ListWords.AddString(“发送:” + m_sWords);

m_ListWords.SetTopIndex(m_ListWords.GetCount()1);

closesocket(m_client);

ServerIP.EnableWindow();

ServerPort.EnableWindow();

m_ButtonConnect.EnableWindow();

m_ButtonDisconnect.EnableWindow(false);

m_EditWords.EnableWindow(false);

m_ButtonSend.EnableWindow(false);

m_ButtonExit.EnableWindow();} “清空”按钮的事件过程: m_ListWords.ResetContent();“关于”按钮的事件过程: CAboutDlg dlgAbout;dlgAbout.DoModal();

服务器端: 开始监听代码:

void CChatServerDlg::OnListen(){

WSADATA wsd;

//WSADATA结构

WSAStartup(MAKEWORD(2,2),&wsd);

//加载协议栈,使用Winsock 2.2版

m_server = socket(AF_INET,SOCK_STREAM,0);//创建流式套接字

//将网络中的事件关联到窗口的消息函数中,定义消息号为20000,侦测客户端的连接请求

WSAAsyncSelect(m_server,m_hWnd,20000,FD_ACCEPT);

m_client = 0;

BYTE nFild[4];

CString sIP;

UpdateData();

if(ServerIP.IsBlank())

{

AfxMessageBox(“请设置IP地址!”);

return;

}

if(sPort.IsEmpty())

{

AfxMessageBox(“请设置监听端口!”);

return;

}

ServerIP.GetAddress(nFild[0],nFild[1],nFild[2],nFild[3]);

sIP.Format(“%d.%d.%d.%d”,nFild[0],nFild[1],nFild[2],nFild[3]);

//服务器地址

sockaddr_in serveraddr;

serveraddr.sin_family = AF_INET;

serveraddr.sin_addr.S_un.S_addr = inet_addr(sIP);

serveraddr.sin_port = htons(atoi(sPort));

//绑定地址

if(bind(m_server,(sockaddr*)&serveraddr,sizeof(serveraddr)))

{

MessageBox(“绑定地址失败.”);

return;

}

//监听开始,服务器等待连接请求的到来

listen(m_server,5);

m_ListWords.AddString(“监听开始:”);

m_ListWords.AddString(“地址” + sIP + “ 端口” + sPort);

m_ListWords.AddString(“等待客户端连接„„”);

//界面完善

m_ListWords.SetTopIndex(m_ListWords.GetCount()-1);

ServerIP.EnableWindow(false);

ServerPort.EnableWindow(false);

m_ButtonListen.EnableWindow(false);

m_ButtonStopListen.EnableWindow();

m_ButtonClear.EnableWindow();

m_ButtonExit.EnableWindow(false);} “停止监听”按钮事件过程代码如下: void CChatServerDlg::OnStopListen(){

//停止监听

closesocket(m_server);

m_ListWords.AddString(“停止监听”);

m_ListWords.SetTopIndex(m_ListWords.GetCount()1);} “断开”按钮事件过程代码如下: void CChatServerDlg::OnDisconnect(){

closesocket(m_client);

m_ListWords.AddString(“与客户端断开”);

m_ListWords.SetTopIndex(m_ListWords.GetCount()1);

//界面完善

m_ButtonDisconnect.EnableWindow();

m_EditWords.EnableWindow();

m_ButtonSend.EnableWindow();} ReceiveData()函数代码如下:

void CChatServerDlg::ReceiveData(){

//接收客户端的数据

char buffer[1024];

int num = recv(m_client,buffer,1024,0);

buffer[num] = 0;

CString sTemp;

sTemp.Format(“收到:%s”,buffer);

m_ListWords.AddString(sTemp);//显示信息

m_ListWords.SetTopIndex(m_ListWords.GetCount()1);

closesocket(m_client);//关闭与客户端通信的Socket

WSAAsyncSelect(m_server,m_hWnd,20000,FD_ACCEPT);//准备接收新的客户端连接

//界面完善

m_ButtonDisconnect.EnableWindow(false);

m_EditWords.EnableWindow(false);

m_ButtonSend.EnableWindow(false);} 服务器的初始化代码如下: //界面初始化

m_ButtonStopListen.EnableWindow(false);m_ButtonDisconnect.EnableWindow(false);m_ButtonClear.EnableWindow(false);m_EditWords.EnableWindow(false);m_ButtonSend.EnableWindow(false);

运行结果:

六、思考题

1.用Winsock API编程时,主要进行哪些通行的操作步骤? 2.阐述C/S模式的通信过程。答:

1.通行的操作

1.Winsock的打开(WSAStartup())。2.建立套接字(socket()或WSASocket())。3.地址绑定(bind())。

4.服务器监听连接(listen())。

5.客户端提出连接申请(connect()或WSAConnect())。6.服务器接收客户端的连接请求(accept()或WSAAccept())。7.数据的发送(send()或WSASend(),sendto()或WSASendTo())。8.数据的接收(recv()或WSARecv(),recvfrom()或WSARecvfrom())。9.关闭套接字(closesocket())。10.关闭Winsock(WSACleanup())。

VBWinSock网络编程 第3篇

关键词:VB程序开发,C/S模型,VB程序调试,异常处理,WinSock控件

1 概述

随着网络的发展, 计算机应用、软件开发都有了一个新的发展方向网络。所以, 随之而来的, 网络软件的开发, 也成了一个新的焦点。而作为一个简单而实用的编程语言VB, 对网络软件开发自然也有它的独到之处, 不管是对C/S模型的方便使用, 还是对Windows Sockets的优化封装, 都给我们提供了更方便的编程环境, 本文将介绍在VB编程过程中遇到错误时的调试方法, 以及各序运行时对产生的异常错误的处理方法。

2 客户端/服务器模型 (C/S)

图1, 是一个简单的C/S模型参考图。在图1中, 我们可以明显的看到, 一个服务器可以同时与多个客户机连接, 在其中起到服务器的作用。不难看出, 客户端程序依靠于服务器程序存在, 通过服务器程序与其他客户进行数据的交换, 所以, 在C/S模型中, Server起着重要的作用, 在一个C/S模型下形成的软件中, 缺少了Server, 单单的Client是不能运行的。

对于采用C/S模型的软件, 是由客户端和服务器端共同存在的, 在整个软件的运行过程中, 有个先后的顺序, 必须由如下的顺序运行:

a.首先服务器要启动, 初始化服务器程序, 等待客户机的请求;

b.客户机启动, 向服务器发送连接请求 (TCP) 或是直接发送登陆数据 (UDP) ;

c.在允许的范围内, 等待所有用户的加入;

d.客户机完成所需功能, 退出程序;

e.服务器确认所有用户都已退出, 结束程序运行。

C/S模型初步实现了软件的分布式, C/S模型中的服务器有时候也可以认为是后台程序, 即运行于后台, 向Client提供服务。

3 Win Sock控件

3.1 Win Sock控件简介

Socket (套接字) 最初是由加利福尼亚大学Berkeley分校为UNIX操作系统开发的网络通信接口, 随着UNIX操作系统的广泛使用, Socket成为当前最流行的网络通信应用程序接口之一。20世纪20年代初, 由Sun Microsystems, JSB, FTP, software, Microdyne和Microsoft的几家公司共同制定了一套标准, 即Windows Sockets规范, 简称Win Sock。

3.2 Win Sock控件的主要属性和方法

3.2.1 Protocol属性:用于设置Win Sock所使用的协议类型, TCP协议对应于常量sck TCPProtocol, UDP协议对应于常量sck UDPProtocol。

3.2.2 Socket Handle属性:返回当前Socket连接的句柄, 是一个只读属性, 常用于将句柄传给Windows Socket API。

3.2.3 Remote Host IP属性:返回远程计算机的IP, 为只读属性。

3.2.4 Byte Received属性:返回当前接收缓冲区中的字节数。

3.2.5 State属性:用于返回Win Sock控件当前的状态。Win Sock的各种状态见表1。

3.2.6 Bind方法:在UDP协议时, 用该方法可以把一个端口号固定为本控件使用。其格式为:wsk Name.Bind[Local Port][Local IP]。

3.2.7 Listen方法:当使用TCP协议时, 创建一个Win Sock套接字以后将其处于监听状态。

3.2.8 Connect方法:在使用TCP协议与远程计算机建立连接时, 使用该方法, 其格式为:wsk Name.Connect Remote Host, Remote Port。

3.2.9 Accept方法:用于TCP协议, 服务器决定是否接受客户机的连接请求, 如果接受连接请求, 则可以用Accept方法。

3.2.1 0 Send Data方法:用于发送数据。

3.2.1 1 Get Data方法:当有数据到达时, 使用该方法从缓冲区中接受数据, 其格式为:wsk Name.Get Data data[, type][, maxlen], 其含义是从缓冲区取出最大长度为maxlen的数据, 并以type为类型, 保存到data中。

3.2.1 2 Peek Data方法:功能与Get Data类似, 但是Peek Data去完数据后不把相应的缓冲区清空。

4 VB程序调试技巧

程序开发的后期, 调试已经成为一个不可忽略的步骤。是否可以在调试的过程中快速的找到问题的所在, 是能否快速排除问题, 完成软件的关键。下面将我个人在VB中使用中的一些关于测试的经验给以介绍。

首先介绍VB中的错误类型, VB中的错误类型分为三类:语法错误, 执行错误和逻辑错误。其中语法错误, 见图2。

Form_Click事件中的Print方法出现了拼写错误, 提示为“子程序或函数未定义”, 这就是VB中的语法错误。

另一类是执行错误, 见图3。

在上面的例子中出现“实时错误, 无效的过程调用或函数”, 在上例中, 最后对一个负数求平方根时, 提示出错, 即执行错误。

逻辑错误是在运行的过程中没有提示错误, 而程序执行的结果与希望的结果不同, 也就是程序在逻辑上发生了错误, 这类错误在调试的过程中最难能发现。如:运算符使用不正确, 语句的次序不对、循环语句的起始、终值不正确等。

在对程序进行调试时, 首先要确定程序中错误的所在, 确定错误出现的过程或函数, 然后在关键语句上加入断点, 以使程序在运行到此位置时可以中断, 以方便进行变量的监测。

当程序执行到断点位置时, 会发生中断, 然后可以使用F8进行单步测试, 或者使用Ctrl+F8使程序运行到光标处, Shift+F8运行当前的过程或函数。

参考文献

[1]刘韬, 骆娟等.Visual Basic6.0实效编程百例[M].北京:人民邮电出版社.

[2]李怀明, 骆原等.Visual Basic6.0中文版参考详解[M].北京:清华大学出版社.

[3]萧秋水, 文娟.Windows网络编程之VB篇[M].北京:清华大学出版社.

[4]蔡开裕.计算机网络[M].北京:机械工业出版社.

[5]相万让.计算机网络应用基础[M].北京:人民邮电出版社.

编程管理网络设备论文 第4篇

Flex Ray网络标准是新一代网络通信协议标准, 可为控制系统提供更快的传输速率与更高的可靠性。Flex Ray网络具有如下4项特点。

1.1 更快的数据传输速率

Flex Ray支持两个通信信道:每个信道的速度达到10 Mb/s。与CAN协议相比, 它能将可用带宽提高10~40倍[1]。

1.2 更高的可靠性

Flex Ray中使用的访问方法是基于同步时基的。该时基通过协议自动建立和同步, 可以提供应用。时基的精确度介于0.5μs和10μs之间 (通常为1~2μs) 。

1.3 更小的时间偏差幅度

通信是在周期循环中进行的。特定消息在通信循环中拥有固定位置, 因此接收器已经提前知道了消息到达时间。到达时间的临时偏差幅度会非常小, 并能得到保证。

1.4 支持冗余通信

为了增强系统的可用性, Flex Ray提供了冗余传输消息的选项。消息能够冗余传输, 但并不是所有消息都必须冗余传输, 否则会导致带宽的过多损失。

2 Flex Ray网络节点

2.1 Flex Ray网络节点物理结构

Flex Ray网络节点是整个网络系统的基本组成单位, 在系统规划下与其他网络节点进行通信。每个Flex Ray网络节点包括控制器部分和驱动器部分 (见图1) 。控制器部分包括一个主机中央处理器和一个通信控制器。驱动器部分通常包括总线驱动器和总线监控器 (可选择) 。总线驱动器将通信控制器与总线相连接, 总线监控器用于监视接入总线的连接[2]。

2.2 Flex Ray数据帧结构

Flex Ray使用的数据帧包括起始段、净荷段、结束段3个帧段, 结构见第85页图2。

Flex Ray使用时间触发方式来传输数据帧, 这样可以保证按照事先确定好的数据帧进行传输。

数据帧的起始段包括9项内容:一是保留位, 为以后协议扩展做准备;二是净荷前导序列指示, 指明净荷段的向量信息;三是零帧指示, 指明净荷段的数据帧是否为零;四是同步帧指示, 指明这是一个同步帧;五是起始帧指示, 指明发送帧的网络节点是否为起始帧;六是帧编号 (ID) , 指明在系统设计过程中分配到每个网络节点的ID;七是长度, 说明净荷段的数据长度;八是起始循环冗余校验 (Header CRC) , 表明同步帧指示器和起始帧指示器的循环冗余校验 (CRC) 计算值, 以及由主机计算的帧ID和帧长度;九是周期, 指明在帧传输时间内, 传输帧的网络节点周期计数。

数据帧的净荷段包括3个部分:一是数据, 可以是0~254 B;二是信息ID, 该信息ID使用净荷段的前2 B进行定义, 可以在接收方作为可过滤数据使用;三是网络管理向量 (NWVector) , 任意该向量长度必须为0~10 B, 并和所有网络节点相同。数据帧的结束段包括硬件规定的CRC值, 这些CRC值会在连接的信道上面改变种子值, 以防不正确的校正[3]。

3 网络节点配置编程实现

网络节点配置软件流程见图3。具体流程为:一是设备驱动初始化:读取动态链接库, 获取驱动程序中设备详细配置;二是Flex Ray网络初始化:通过扫描当前设备, 获得当前可用通道, 激活默认端口;三是设置网络配置信息:读取网络规划配置文件, 根据配置文件设置网络配置信息;四是启动和同步Flex Ray总线:根据配置文件设置启动同步帧, 并向其他网络节点发送;五是启动Flex Ray数据帧接收线程:设置数据帧接收线程相关配置信息并启动;六是根据配置发送数据帧:根据网络规划设置数据帧相关配置信息并发送;七是关闭Flex Ray网络:任务完成后关闭Flex Ray网络, 并释放相关资源;八是关闭相关设备[4]。

网络节点配置程序编译通过, 然后软件与其他网络节点同步成功后, 软件界面见图4。

4 结束语

随着Flex Ray联盟对Flex Ray标准化的推进, 其网络通信协议已被很多大型汽车厂商应用在其最新研发的产品之中。在网络设计完成的前提下, Flex Ray可在Windows环境下实现网络节点的配置编程, 为人机交互界面与其他网络节点通信提供接口。

参考文献

[1]Hall B B, Driscoll K, Paulitsch M, et al.Flex Ray Communications System-Protocol Specification[M].Version 2.1.Stuttgart:Flex Ray Consortium, 2005.

[2]Welch J L, Lynch N A.A New Fault-Tolerant Algorithm for Clock Synchronization[J].Information and Computation, 1988, 77 (1) :1-36.

[3]Rausch M.Optimierte Mechanismen und Algorithmen in Flex Ray[J].Elektronik Automotive, 2002 (12) :36-40.

如何轻松编程实现精准网络对时 第5篇

现偏差, 这可能会对工作造成不利影响。虽说现在有很多软件, 可以实现网络对时操作。不过, 求人不如求己, 如果可以自己动手, 打造简单快捷的网络对时程序, 从Internet上的时钟服务器上得到准确的时间信息, 之后自动调整本机的时钟, 那一定是一件很有趣的事情。利用Auto Hot Key这款小巧精悍的脚本开发工具, 只需简单的几行代码, 即可让电脑时钟变得分毫不差。如果将其和Windows的计划任务结合起来, 效果就更好了。Auto Hot Key下载地址:http://home.tampabay.rr.comkodi/ahk/Auto Hotkey Install.exe。

打开Windows资源管理器, 任选一个文件夹, 在空白处点击右键, 在弹出菜单中依次选择菜单“新建”“Auto Hotke Script”, 在当前路径下新建一个Auto Hot Key脚本文件, 将其改为合适的名字 (例如“Adjust Clock.ahk”) 。在该文件的右键菜单中选中“Edit Script”, 打开脚本编辑器。在脚本辑器窗口开头处按回车键另起一行, 输入以下脚本:

之后保存该脚本程序即可。该脚本中的第一行中的“http://132.163.4.103:13”表示网络服务器的地址, 其中的“13”表示网络端口。实际上, 在网络上还存在很多时钟服务器, 例如:http://132.163.4.101:14, http://132.163.4.102:13, http://132.163.4.102:14, http://132.163.4.103:13, http://132.163.4.103:14, http://207.126.98.204:14, http://131.107.1.10:13, http://129.6.15.28:13, http://129.6.15.29:13, http://128.138.140.44:13, http://192.43.244.18:13, http://69.25.96.13:13, http://216.200.93.8:13, http://208.184.49.9:13, http://207.200.81.113:13, http://64.236.96.53:13, http://68.216.79.113:13等。

可以根据实际需要进行使用。程序的第一行使用“Url Down Load To File”函数从指定网址下载时间信息数据, 之后将其保存在运行程序所在的目录下, 其名称为“$.time”, 这里的“%A_Script Dir%”表示运行程序所在的目录。使用记事本打开“$.time”文件, 可以看到其中保存的时间信息, 例如“55018 09-07-06 03:28:35 50 0 0 759.8 UTC (NIST) *”, 其中的UTC表示世界协调时间 (Universal Time Coordinated, UTC) , 为加特林威治标准时间的新名。UTC就是0时区的时间, 地方时间为本地时间, 如北京为早上8点 (东八区) , UTC时间就为零点, 时间比北京时晚8小时。程序的第二行到第四行用来判断下载时间信息是否出错, 如果出错, 则弹出错误信息, 并使用“Exit App”函数退出程序。接下来使用“File Read Line”函数读取“$.time”文件, 读取其中的两行字符串数据, 并将读取的结果保存在“x”变量中。接着使用“Var Set Capacity”函数动态设定变量“T”的长度, 这样可以为其在内存中分配存储位置。然后使用了7个“Dll Call”函数对保存在“X”变量中的时间信息进行处理, 函数“Dll Call”的作用是调用指定动态库中的相关函数, 如果调用的是User32.dll, Kernel32.dll, Com Ctl32.dll, Gdi32.dll等系统自带的DLL文件的话, 则可以忽略该DLL的名称, 而直接使用其中的相关函数 (这里为“Rtl Fill Memory”) 。当时间信息设置为本地可用的格式后, 就通过“Dll Call ("Set System Time", Str, T) ”语句调用系统DLL中的“Set System Time”函数来调整系统时间, 最后使用“Post Message 0x1E, , , , ahk_class Shell_Tray Wnd”语句, 通过发送系统消息来刷新系统托盘中的时钟信息。程序中的各种函数的具体用法可以查阅Auto Hot Key自带的帮助文档。

基于Java的系统网络编程 第6篇

Java语言是一个完全融入网络的语言,适合编写网络应用程序,它能够运行在不同平台上,同时Java程序可以方便地进行网络通信,具有完善的安全机制,可以对程序进行权限检查,并且JDK类库提供了丰富的网络类库,大大简化了网络程序的开发过程。

一、Java的网络编程协议

TCP和UDP是TCP、IP协议中的两个传输层协议,它们使用IP路由功能把数据包发送到目的地,从而为应用程序及应用层协议提供网络服务。TCP

(Transmission Control Protocol,传输控制协议)是面向连接的协议。“面向连接”就是在正式通信前必须要与对方建立起可靠的连接,在数据传输前,信息发送方和信息接收方之间先要进行信息交换的测试,只有当信息接受方能够接收数据后,才开始进行数据的传送。通过两台计算机之间建立连接,数据的传输才能保证接收的数据和接收的顺序的正确及数据传输的准确(如图1所示)。这就好像平时的打电话,必须等线路接通了、对方拿起话筒才能相互通话。一个T C P连接必须要经过三次“对话”才能建立起来,其中的过程非常复杂。

UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议,是面向非连接的协议。“面向非连接”就是在正式通信前不必与对方先建立连接,不考虑对方状态就直接发送数据,因此,信息发送方发出信息后不知道信息被接受的情况,而信息接收方也不会知道收到的信息发出情况,这样的特点使得非连接通信方式下通信速度快(如图2所示)。这就好像平时的发手机短信,必考虑对方状态,只需要输人对方手机号就行。

综上所述,T C P提供的是面向连接的、可靠的数据流传输,而UDP提供的是面向非连接的、不可靠的数据流传输。面向连接的协议在任何数据传输前就建立好了点到点的连接,面向非连接的协议在数据传输之前不建立连接,而是在每个中间节点对面向非连接的包和数据包进行路由。

二、Socket通信接口

Socket又称套接字,英文原义是“插座”是进程之间通信的抽象连接点。可以通过一个形象的例子来理解这个概念,现实生活中的电话是人们联系的常用工具,双方只要使用两部电话机就可以交谈。在计算机世界中,两个程序就是使用Socket进行通信的,一个Socket就好比一部电话机,两个程序在网络上通过一个双向链路进行通信,这个双向链路的每一端就成为一个Socket。Socket类是基于客户/服务器模式而实现某些特殊应用的,其网络通讯过程是利用TCP/IP协议中的传输层接口Socket来实现的。就是基于套接字,我们才可以将运行在同一系统中的不同服区分开来。通信过程可用图3表示:Host A上的程序A将一段信息写入Socket中,Socket的内容被Host A的网络管理软件访问,并将这段信息通过Host A的网络接口卡发送到Host B,Host B的网络接口卡接收到这段信息后,传送给Host B的网络管理软件,网络管理软件将这段信息保存在Host B的Socket中,然后程序B才能在Socket中阅读这段信息。

四、系统网络通信的实现

前面已经分析过Java网络编程使用的两种不同协议,下面就对网络编程中使用两种不同的协议做简要的介绍。

(一)基于TCP协议的Socket通信

基于TCP协议的Socket通信是面向连接的操作方式,通信链路提供了可靠的全双工的字节流服务,在该方式下,通信双方必须创建一个联接过程,并建立一条通讯链路,以后的网络通讯操作完全在这一对进程之间进行,通信完毕关闭此联接过程。通信过程可描述如下:(1)在服务器端创建一个指定端口号的ServerSocket对象,ServerSocket的构造方法为ServerSocket (int port),其中port为端口号,必须和客户端程序呼叫的端口号一样,另外ServerSocket对象创建时可能会发生IOException异常,异常创建语句应包含在一个try..catch结构中;(2)运行ServerSocket对象的accept()方法,在指定端口等待客户端的请求,建立连接;(3)在客户端创建一个指定计算机地址和与服务器端具有相同端口号的Socket对象,由Socket对象向服务器端发出连接请求,Socket类的构造方法为:Socket (String host,int port),host为服务器的IP地址;(4)服务器端的ServerSocket对象接到请求后,创建一个Socket对象与客户端进行连接;(5)连接建立后,服务器端和客户端可分别建立输入输出数据流进行数据传输;(6)通信结束,关闭两端的Socket连接;(7)服务器端调用ServerSocket对象的close()停止等待客户端请求(如图4所示)。

(二)基于UDP协议的Socket通信

基于UDP协议的Socket通信是面向非连接的操作方式,使用无联接方式时,其系统开销比联接方式要小,但通信链路提供了不可靠的数据服务,不能保证信源所传输的数据一定能到达信宿,该方式下,通信双方不必建立一个联接过程和一条通讯链路,网络操作在不同的主机和进程之间转发进行。通信过程可描述如下:(1)在发送端用DatagramPacket类创建一个对象,将指定数据打包发送到指定计算机的端口,构造方法如下:DatagramPacket (byte[]?buf,i nt?offset,irnt?length,InetAddress?address,int?port),它的作用为构造数据报包,用来将长度为length偏移量为offset的包发送到指定主机上的指定端口号;(2)接收端用DatagramSocket类创建一个具有数据包指定端口的对象,构造方法如下:DatagramSocket(int?port)作用为创建数据报套接字并将其绑定到本地主机上的指定端口;(3)接收端创建一个数据包;(4)在接收端由DatagramSocket对象执行rece i ve ()方法可以用创建的数据包来接收从网络中传来的数据包;(5)通信结束(如图5所示)。

五、结束语

Java语言在设计之初,就充分考虑了面向网络的通信。网络编程的基本模型就是两个进程之间相互通讯,其中一个必须提供一个固定的位置,而另一个则只需要知道这个固定的位置,并去建立两者之间的联系,然后完成通信。Socket实质上提供了通信的端点,即从Socket发送数据和从Socket接收数据,客户程序可以访问Socket写请求,服务器将处理此请求,然后通过Socket将结果返回用户。正是由于Java系统具有基于Socket的灵活通信机制,因而其应用程序能自由的打开和访问网络上的对象,显示出Java其强大的网络编程功能。

摘要:使用Java语言开发网络应用系统得到了越来越广泛的应用,本文结合Java网络编程的特点,介绍了Socket通信机制,阐述了Java语言中基于TCP连接与UDP连接基础上的Socket编程的步骤和方法。

关键词:java,网络编程,socket

参考文献

[1]訾杰.Java网络编程的探讨[J].中国科技博览, 2010(12).

[2]张宗飞.VB中基于TCP和UDP协议通信编程技术[J].计算机与现代化,2008(4).

[3]3资武成,贺志苗.基于SOCKET的Java网络编程[J].娄底师专学报,2003(2).

[4]刘烨.用SOCKET实现基于TCP和UDP的原理探索[J].电脑学习,2009(3).

基于Wince的网络通讯编程 第7篇

1.1 简介

BSD UNIX规范定义的一套Micrsoft Windows下的网络编程接口,规范中包含了Windows的扩展库函数和Berkeley Socket风格的库函数。

所有的应用程序开发者可使用Windows Sockets规范提供的一套简单的API函数和共同遵守这项规范。Windows Sockets有一个接口,为二进制接口(ABI),目的是为了保证Windows Sockets API应用程序的所有软件供应商都能够遵循Windows Sockets协议而工作。

网络软件供应商可以充分地使用Windows Sockets规范定义的库函数和相关语义。

“Windows Sockets兼容的”的含义是遵守Windows Sockets规范的网络软件。任何一个网络软件供应商必须完全实现Windows Sockets规范,才能正在做到Windows Sockets兼容。其中,Windows Sockets规范涉及两个概念“提供者”和“Windows Sockets应用程序”。“提供者”即Windows Sockets兼容实现的提供者;“Windows Sockets应用程序”即被称为具有Windows Sockets接口,是能够与Windows Sockets兼容实现协同工作的任何应用程序。

如“应用程序同Winsock关系图”所示,Windows Sockets利用网络编程、网络通讯协议服务和操作系统,实现应用程序之间实际的通讯工作,并且Windows Sockets应用程序调用Windows Sockets的API以实现相互之间的通讯。

1.2 Windows CE平台中的Socket API函数

1.2.1 创建套接字

可以通过socket函数来创建套接字,它的声明如下:

当socket函数返回套接字句柄时,表明创建套接字成功;当socket函数返回Invalid_socket,表明创建套接字不成功,同时可以通过调用WSAGet Last Error函数,获取具体错误代码。

1.2.2 关闭套接字

Closesocket函数,即关闭套接字。当创建的套接字,然后不再使用时需关闭并释放资源,可调用Closesocket函数。当程序员想调用closesocket函数之前,必须先调用shutdown函数,该过程的目的是“从容中断连接”。为了防止调用closesocket函数时产生负面影响,数据可能会丢失的现象发生。因此提出了“从容中断连接”技术,即通信方收到应用程序发出所有数据时,应报证通信方立刻通知接收端“不再发送数据”。

Shutdown函数的定义如下:

参数how可用值表:

closesocket函数的定义如下:

1.2.3 绑定套接字

创建好套接字后,需通过bind函数将其绑定到一个已知的地址上。Bind函数的定义如下:

当返回值为SOCKET_ERROR时,表明调用bind函数出错。

如果另一个进程同本地IP接口和端口号绑定到一起了,表明使用了TCP/IP,或者可能是那个IP接口和端口号处于TIME_WAIT状态。调用bind函数时,则会出现最常见的错误WSAEADDRINUSE。还有一种情况,如果针对一个已经被绑定的套接字调用了bind函数,则会返回WSAEFFAULT错误。

有两个特殊的IP地址可对特殊情况下的套接字行为产生影响,比如绑定套接字和本地接口连接时,网络将运用特殊地址来监听连接。其中,用于一个IP网络中发送广播UDP数据报的特殊地址是INADDR_BROADCAST,在使用该地址时,需设置套接字选项SO_BROADCAST。

建立一个TCP连接时绑定套接字的方法。

1.2.4 监听套接字

程序员编写TCP服务器端,将套接字与本地地址绑定后,调用listen函数,并将套接字设置为监听模式,等待与客户端连接。

Listen函数的定义如下:

1.2.5 等待连接

服务器端与客户端连接,客户端发出连接请求,服务器端则调用accept函数。当accept函数调用成功后,将返回一个新的套接字,与客户端的套接字连接进行通讯。

accept函数的定义如下:

调用accept函数有两种调用方式,分别是阻塞调用和非阻塞调用。当套接字为阻塞模式时,accept函数以阻塞方式执行,当等待队列中出现一个等待连接时,它才接收等待连接中的第一个连接请求。当套接字为非阻塞模式时,只要等待队列中存在连接请求,它将接收等待连接中的第一个连接请求,否则将返回INVALID_SOCKET。如果调用WSAGet Last Error函数返回WSAEWOULDBLOCK值,则表示等待队列目前已经不存在请求。

1.2.6 建立连接

调用connect函数可以将TCP客户端与TCP服务器建立。当connect函数的返回值为0,套接字为阻塞方式时,表明和TCP服务器端已经建立了连接。如果connect函数的返回值为SOCKET_ERROR,表明和TCP服务器端连接失败。connect函数定义如下:

1.2.7 发送数据

套接字可以分为连接的套接字和非连接的套接字。程序员可以通过send函数实现连接套接字发送数据。send函数的定义如下:

2 TCP编程概述

TCP(Transmission Control Protocol传输控制协议),是在主机间实现高可靠性的包交换传输的一种协议。在网络高速发展的今天,TCP的应用非常广泛,人们可以通过它来传输数据安全性要求较高的数据。TCP是一种无差错无重复的顺序数据传输方式,同时TCP的套接字为流式套接字。源程序和目标程序利用TCP通信时,它们之间便搭建了一个虚拟连接进行通讯,两台计算机之间是以双向字节流形式而数据交换。

如TCP服务器和客户端流程图所示,TCP服务器端编程的流程为:1)TCP服务器端调用socket函数建立流式套接字;2)调用bind函数绑定本地地址;3)通过调用listen函数监听客户端连接;4)当监听到客户端连接请求时,服务器套接字调用Accept函数,并接受客户端连接请求建立连接;5)服务器端新加一个单独的套接字,与客户端进行通讯。

TCP服务器端与TCP客户端过程比较而言,TCP客户端编程过程简单些。可分为如下几个过程:1)客户端调用socket函数建立流式套接字;2)TCP客户端调用connect函数,请求与TCP服务器端连接;3)成功建立连接;4)TCP客户端同TCP服务器端通讯。

下面以“打开TCP服务”为例,了解套接字中函数使用的方法与过程。

1)初始化Socket资源;2)创建TCP监听套接字;3)当创建完TCP监听套接字后,调用bind函数绑定套接字和本地地址;4)监听套接字开始监听;5)监听线程处理与客户端的连接。

Open函数的定义如下:

“打开TCP服务”的具体实现如图所示:

当然,对于实际的项目,在使用时还应当根据实际情况做适当的修改。

3 总结

Microsoft Windows CE是一个紧凑、高效和可扩展的操作系统,适应于多种嵌入式产品。它的特点是拥有多任务、多线程、确定性的实时、完全抢先式优先级的操作系统环境,专门面向的是只有有限资源的硬件系统。本文首先介绍了套接字编程基础中套接字的基本命令,然后介绍了套接字在TCP编程上的使用。

参考文献

[1]汪兵.Windows+CE+嵌入式高级编程及其实例详解(用C++实现)[M].北京:中国水利水电出版社,2008:406-471.

[2]周建设.Windows+CE设备驱动及BSP开发指南[M].中国电力出版社,2009:211-229.

[3]尹乐,许刚强.Windows+CE项目开发实践丛书[M].中国高新技术企业,2014(12):17-18.

《网络编程》实验平台的建设与应用 第8篇

《网络编程》是实践性较强的一门课程 , 是软件工程、网络工程、通信工程和计算机科学与技术等专业课程体系中的核心专业课程[1]。其实验课对培养学生理论联系实际、 协作精神、动手能力和创新能力具有重要的作用。

但是 , 由于网络 技术发展 更新比较 快 , 现在市场 上的《网络编程》教材内容也不尽相同 , 没有统一的课程标准 , 所以课程教学大都存在以下问题:

(1) 传统的网络编程课程的教学方法多以讲授计算机网络基础理论为主、少量的验证性实验为辅[2], 对学生动手能力的培养不够。

(2) 实验内容层次比较单一[3]。传统的实验内容对所有的学生都是同一套方案, 没有考虑到学生实际水平和学习能力的差异以及部分同学对网络编程进行进一步提高的需求, 对学生的创新力和想象力的提高帮助不大。

(3) 实验内容割裂了教学内容之间的联系。《网络编程 》教学通常沿袭编程课程“程序设计”的教学模式, 实验内容围绕教学知识点设置, 用来验证前次课堂的教学内容[4]。这种实验教学模式不利于培养学生的高级编程能力。

(4) 缺少综合的网络编程实验平台。网络编程比一般的程序设计难度大、 复杂性高。如果缺少实验平台, 学生需要花费大量的时间来设计与网络原理关系不大的基础代码[5]。这不但不能抓住课程重点, 而且增加了编程难度。

基于以上几点, 通过对多年的教学经验分析和总结, 利用常见的软件设计模式的基本思想, 开发了一个“网络编程实验平台”。通过多次教学实验, 效果良好, 并在2013年广东省计算机教育软件评审活动中获高等教育组教育教学工具类软件系统三等奖。

2 软件的总体设计

本软件基于C/S模式, 学生与老师的操作界面相同, 但权限不同, 他们的输入数据被传到服务器端。现在分别介绍软件的各个组成部分。

2.1 数据库

数据库中主要记录老师信息和学生信息, 所以主要包含以下2张表。

(1) 教师信息表 : 本软件一共有8个实验 , 每位任课老师可以根据本学期的实验计划, 在学期开始前选择本学期学生要完成的实验, 该数据将存于服务器的数据库中。学生开始实验时, 软件根据老师的选择情况决定学生的哪些实验模块可用, 教师信息表的结构如表1所示。

(2) 学生信息表 : 学生每次实验必须记录其实验开始时间、实验完成时间、是否提交实验报告? 老师根据此信息判断学生是否迟到、旷课和早退, 并参考学生提交的实验报告给出学生本次的实验成绩。学生信息表的结构如表2所示。

2.2 主控程序

实验平台主界面中主要包括: 实验目录树、实验基础知识、实验内容、实验实例介绍、 实验实例关键源代码, 以及各个实验实例小工具等。界面图如图1所示。

其中, 实验目录树中包括进程管理、线程管理、IP地址与域名解析、网卡信息检测、Tcp Listener类与聊天程序服务器端设计、Tcp Client类与聊天程序的客户端设计、Udp Client类与组播程序设计、Udp Client类与网络会议程序设计、FTP命令与服务器端编程、FTP相关类与客户端编程、HTTP与简单浏览器的设计、SMTP相关类与邮件发送器的设计、POP3协议与邮件接收器的设计等实验内容。

用户可按以下操作方法进行实验:

(1) 用户先选择左边 目录树中 的“具体 实验内容 ” , 如“FTP相关类与客户端编程”确定本次要做的实验。

(2) 选择右边的“实验基础 ”和“实验内容 ”查看相关的实验目的、实验知识和实验内容。

(3) 点击“实验实例”可查看本次实验小工具的使用方法。

(4) 如果想查看“实验实例 ”的关键源代码 , 可点击右下角状态栏中的“实例代码”按钮查看。

(5) 最后运行具体的实验实例小工具 , 如点击“FTP服务器端”按钮即可启动FTP服务器端, 点击“FTP客户端”按钮可启动FTP客户端。

当学生做完实验后要按要求写好相关的“实验报告”, 并提交给实验指导教师。该软件系统的主控程序的用例图如图2所示。

为了增强软件的扩展性和可维护性, 本实验平台采用软件设计模式中的“抽象工厂模式”设计, 这样以后增加、删除或修改实验都很方便。其结构图如图3所示。

3 各实验子模块

本平台包含8个网络实验 , 每个实验 都包含实 验基础、实验内容、 实验实例、实例关键源代码等内容。它们介绍了本次实验的实验目的和要求、实验相关知识、 实验算法流程图、实验效果图。学生可查看关键源代码, 并启动实验实例进行实验, 然后编写类似的代码, 完成实验报告。现分别介绍各个实验实例的算法和运行效果图。

3.1进程管理和线程管理

本实验不属于网络编程的关键内容, 但网络编程实验中常用到其基础知识[6]。老师可根据学生的知识情况选做 , 其中进程管理的程序流程图如图4所示。

进程管理的运行效果图如图5所示。

线程管理的程序流程图如图6所示。

3.2 IP地址与域名解析

本实验主要介绍了IP地址和端口号的基本概念, 以及其相关类的用法方法。其程序流程图如图7所示。

本实验的运行效果图如图8所示。

3.3网卡信息检测

本实验主要介绍获取网卡信息及获取网络流量统计信息的相关方法。其程序流程图如图9所示。

本实验的运行效果图如图10所示。

3.4聊天程序服务器端和客户端

本实验用Tcp Listener类和Tcp Client类来完成聊天程序的设计。其中聊天程序服务器端的程序流程图如图11所示。

聊天程序客户端的程序流程图如图12所示。

聊天程序客户端的运行效果图如图13所示。

3.5 UDP应用程序

这部分包括Udp Client类与组播程序设计和Udp Client类与网络会议程序设计等2个小实验。主要介绍了UDP协议、组播和广播的概念, 以及相关类的使用方法。

组播实验的程序流程图如图14所示。

网络会议实验的程序流程图如图15所示。

组播程序的运行效果图如图16所示。

3.6 FTP服务器端和客户端

本实验主要介绍了FTP工作原理、数据传输方式以及FTP程序的设计方法。其中FTP客户端的程序流程图如图17所示。

FTP服务器端的程序流程图如图18所示。

FTP客户端的运行效果图如图19所示。

3.7 HTTP与简单浏览器

本实验主要介绍了HTTP的相关类的用法, 以及如何用Web Browser控件设计一个简单的HTTP浏览器。其程序流程图如图20所示。

3.8邮件收发器

本实验主 要介绍电 子邮件的 组成部分 、POP3命令与SMTP相关类的使用方法 , 以及如何设计一个邮件发送器和邮件接收器。其中邮件发送器的程序流程图如图21所示。

邮件接收器的程序流程图如图22所示。

邮件发送器的运行效果图如图23所示。

4 软件测试

为了检验软件的实用性, 依据测试计划和测试用例, 认真对实验平台进行了完整的测试。其中实验环境是: 硬件有Genuine Intel ( R) CPU 1.6GHz、512MB内存、硬 盘、彩显 、局域网。软件有《网络编程》实验平台, 操作系统是WindowsXP SP3。测试人员是相关班级的学生和老师。 测试内容包括界面美观性、软件的易用性、代码可靠性、功能全面性、 系统可扩展性和软件可维护性。参考文档有软件设计说明文档、软件使用说明文档、《网络编程》课程实验案例。

5 实验结果

编程管理网络设备论文

编程管理网络设备论文(精选8篇)编程管理网络设备论文 第1篇1 系统流程设计系统依照医疗设备维修的周期进行设计。当医疗设备出现故障, ...
点击下载文档文档内容为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

确认删除?
回到顶部