CN1842073A - 一种实现网络计算机的外部设备映射的方法 - Google Patents
一种实现网络计算机的外部设备映射的方法 Download PDFInfo
- Publication number
- CN1842073A CN1842073A CN 200510059844 CN200510059844A CN1842073A CN 1842073 A CN1842073 A CN 1842073A CN 200510059844 CN200510059844 CN 200510059844 CN 200510059844 A CN200510059844 A CN 200510059844A CN 1842073 A CN1842073 A CN 1842073A
- Authority
- CN
- China
- Prior art keywords
- function call
- function
- peripheral hardware
- client modules
- server end
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Telephonic Communication Services (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种实现网络计算机的外部设备映射的方法,在服务器的外设应用层下设置拦截模块与重定向客户端模块;在网络计算机NC的外设驱动层之上设置重定向服务器端模块;服务器的外设应用层访问NC的外部设备时,该方法包括:A.所述拦截模块拦截服务器外设应用层发送的访问外部设备的函数调用信息并发送至所述重定向客户端模块;B.所述重定向客户端模块将接收到的函数调用信息发送至对应NC中的重定向服务器端模块;C.所述重定向服务器端模块根据接收到的函数调用信息,调用所述NC的外设驱动层中的外设访问函数,访问该NC连接的外部设备。应用本发明方法能够实现各种外部设备从网络计算机向服务器的映射。
Description
技术领域
本发明涉及网络计算机的应用技术,特别涉及一种实现网络计算机的外部设备映射的方法。
背景技术
网络计算机(NC,Network Computer)是一种无硬盘、光驱、软驱等设备的简化计算机,其利用本地资源或服务器资源进行计算,利用服务器资源进行数据存储,具有安全、可靠、易管理等特点,并已在政府、职能部门、和企业中得到了广泛应用。与普通计算机不同,网络计算机除了运行本地应用以外,主要是通过登录WBT(指服务器端运行Windows系列操作系统)或者UBT(指服务器端运行Unix或Linux系列操作系统),运行服务器上的应用。目前,以登录WBT方式下的应用居多,其采用的通讯协议主要有远程桌面协议(RDP,Remote Desktop Protocol)和独立计算结构协议(ICA,Independent Computing Architecture)两种。
在WBT模式下,Windows服务器的外设应用层上运行的软件对于用户是可见的,外设应用层也只能访问连接在Windows服务器上的各种外部设备,比如:打印机、U盘、USB接口的身份认证硬件(U-KEY)等,而NC的使用模式却要求各种外部设备连接在NC的各种接口上,因此,需要使WBT模式下的服务器外设应用层可以访问连接在NC上的外部设备,即:实现NC的各种外部设备从NC向Windows服务器的映射。目前,RDP和ICA协议已经实现了一些基本外部设备的映射功能,比如:串口设备、打印机等,但还不能对所有外部设备实现映射功能,比如:RDP和ICA协议还不能实现U-KEY、扫描仪、Windows2000系统声卡等外部设备向Windows服务器的映射。
通常,服务器的外设应用层软件访问连接在本地的外部设备硬件时,需要调用外设访问函数,首先由外设应用层调用外设驱动层,将函数调用信息发往外设驱动层,然后外设驱动层根据函数调用信息调用对应的外设访问函数,对外部设备硬件进行各种访问操作。对于大多数外部设备而言,其外设驱动层中仅包含外设硬件驱动层,用于提供各种外设访问函数,这些外设访问函数可以实现打开外部设备、关闭外部设备、对外部设备进行读写等操作。但是,对于U-KEY等外部设备来说,为了方便在同一终端上扩展使用多个外部设备,其外设驱动层中包含两个处理层:外设中间件层和外设硬件驱动层,所述外设中间件层提供了多个外部设备的函数接口,根据接收到的函数调用信息调用对应外部设备的函数接口,通过所调用的函数接口调用所述外设硬件驱动层中对应的外设访问函数,从而访问对应的外部设备硬件。这里,外设中间件层通常实现为一个动态链接库,该动态链接库提供多个外部设备的函数接口,外设应用层访问外部设备时,调用动态链接库,并发送函数调用信息至动态链接库,该动态链接库根据接收到的函数调用信息调用对应的函数接口。
但是,针对U-KEY、扫描仪、Windows2000系统声卡等外部设备,RDP、ICA等NC通讯协议尚未提出Windows服务器如何调用NC的外设访问函数的具体规范,因此,Windows服务器还不能访问NC连接的U-KEY、扫描仪、Windows2000系统声卡等外部设备,还不能实现这些外部设备向Windows服务器的映射。
综上所述,现有的NC通讯协议不能为所有NC可能连接的外部设备提供向服务器映射的功能,这将使服务器无法访问这些外部设备,用户只能使用连接在服务器端的外部设备。但是,对于某些外部设备来说,其使用意义即在于连接在各个用户的NC上,如果不能实现该外部设备向服务器的映射,将造成该外部设备无法使用。比如:如果要在金融、电信领域应用NC,则各用户专用的NC必须连接U-KEY来实现网上安全支付、网上身份认证、软件授权使用等重要功能;但是,由于U-KEY连接NC时无法映射到服务器上,因此U-KEY无法正常使用,而U-KEY又在这些特殊领域具有重要作用,这样使金融、电信领域不适于应用NC技术。可见,现有的实现NC外部设备向服务器映射的技术不能满足NC向各种业务领域广泛扩展的需求,亟待提供一种技术能够实现更多外部设备从NC向Windows服务器的映射。
发明内容
有鉴于此,本发明的主要目的在于提供一种实现网络计算机的外部设备映射的方法,能够使服务器的外设应用层可以访问连接在NC上的各种外部设备,实现各种外部设备从NC向服务器的映射功能。
为达到上述目的,本发明的技术方案是这样实现的:
本发明公开了一种实现网络计算机的外部设备映射的方法,在服务器的外设应用层下设置拦截模块和重定向客户端模块;在网络计算机NC的外设驱动层之上设置重定向服务器端模块;服务器的外设应用层访问NC的外部设备的过程包括:
A.拦截模块拦截服务器外设应用层发送的访问NC外部设备的函数调用信息并发送至重定向客户端模块;
B.重定向客户端模块将接收到的函数调用信息发送至对应NC中的重定向服务器端模块;
C.NC中的重定向服务器端模块根据接收到的函数调用信息,调用NC的外设驱动层中的外设访问函数,访问该NC连接的外部设备。
其中,所述外设驱动层中仅包含外设硬件驱动层;步骤A中,所述拦截模块拦截所述函数调用信息的方法为:按协议规定的构架将所述拦截模块配置成所述外设硬件驱动层的过滤驱动模块;服务器外设应用层调用外设访问函数时,将函数调用信息发送至该拦截模块。
其中,所述外设驱动层中包含:外设中间件层和外设硬件驱动层;所述外设中间件层提供包含所有函数接口的动态链接库;步骤A中,所述拦截模块拦截所述函数调用信息的方法为:在拦截模块中,构造与所述外设中间件层提供的动态链接库具有相同标识的动态链接库,所构造的动态链接库中包含的各函数接口与外设中间件层中各函数接口具有相同的标识,并使用所构造的动态链接库覆盖服务器系统目录中的外设中间件层提供的动态链接库;服务器外设应用层调用外设访问函数时,调用所构造的动态链接库中的函数接口,将函数调用信息发送至拦截模块。
步骤C中,所述重定向服务器端模块调用所述外设驱动层中的外设访问函数后,该方法进一步包括:NC的外设驱动层返回函数调用结果给所述重定向服务器端模块,该重定向服务器端模块再将接收到的函数调用结果返回给所述重定向客户端模块,该重定向客户端模块通过所述拦截模块将接收到的函数调用结果返回给服务器的外设应用层。
其中,所述重定向客户端模块和重定向服务器端模块通过建立网络连接传输函数调用信息和函数调用结果。
步骤B中,重定向客户端模块接收到该函数调用信息后进一步判断该函数调用信息指示何种操作,若所述函数调用信息指示打开外部设备,则重定向客户端模块建立自身与该函数调用信息对应的重定向服务器端模块之间的网络连接,通过当前建立的网络连接传输函数调用信息或函数调用结果;若所述函数调用信息指示对外部设备进行除打开外部设备和关闭外部设备之外的其它操作,则重定向客户端模块通过已建立的网络连接传输函数调用信息和函数调用结果;若所述函数调用信息指示关闭外部设备,则重定向客户端模块通过已建立的网络连接传输函数调用信息,并且,步骤C中,重定向客户端模块接收到该函数调用信息对应的函数调用结果后,进一步包括:释放所述已建立的网络连接。
步骤B中,所述重定向客户端模块每次接收到函数调用信息后,建立自身与该函数调用信息对应的重定向服务器端模块之间的网络连接;步骤C中,所述重定向服务器端模块每次返回函数调用结果后,进一步包括:释放所述当前建立的网络连接。
其中,所述建立网络连接的方法为:所述重定向客户端模块创建套接字SOCKET,获取所述重定向服务器端模块的IP地址,使用自身创建的SOCKET、按所获取的IP地址向重定向服务器端发送网络连接建立请求;所述重定向服务器端模块预先创建用于监听的SOCKET,在该用于监听的SOCKET监听到来自重定向客户端模块的网络连接建立请求后,创建用于传输的SOCKET,返回应答给重定向客户端模块,网络连接建立;所述释放网络连接的方法为:所述重定向客户端模块关闭自身创建的SOCKET,断开网络连接;所述重定向服务器端模块关闭自身创建的用于传输的SOCKET。
步骤B中,所述重定向客户端模块将所述函数调用信息封装成数据包,再将所封装的数据包发送至所述重定向服务器端模块,该重定向服务器端模块解析接收到的数据包得到所述函数调用信息;步骤C中,所述重定向服务器端模块将接收到的函数调用结果封装成数据包,再将所封装的数据包返回给所述重定向客户端模块,该重定向客户端模块解析接收到的数据包得到函数调用结果。
其中,所述外部设备为:USB接口的身份认证硬件U-KEY、或扫描仪、或Windows2000系统的声卡;所述服务器为Windows服务器。
由上述方案可以看出,本发明的关键在于:在服务器的外设应用层下设置拦截模块与重定向客户端模块;在NC的外设驱动层之上设置重定向服务器端模块;当服务器的外设应用层访问NC的外部设备时,所述拦截模块拦截服务器外设应用层发送的访问NC外部设备的函数调用信息;然后,重定向客户端模块将接收到的函数调用信息重定向至远端NC的重定向服务器端模块;最后,该重定向服务器端模块根据函数调用信息调用本地外设驱动层中的外设访问函数,从而实现服务器对NC连接的外部设备的访问。
因此,本发明所提供的实现NC的外部设备映射的方法,使服务器能够访问NC连接的各种外部设备,实现外部设备向服务器映射的功能。尤其在WBT模式下,实现了Windows服务器对NC连接的U-KEY的访问操作,从而在协议规定的外部设备映射功能之外,扩展了U-KEY从NC向Windows服务器映射的功能,使NC技术得以扩展至广泛应用U-KEY的金融、电信等特殊领域。并且,本发明的实现简单易行,不必对现有的外设应用层和外设驱动层作任何修改,稳定性和可操作性均能达到较高水平。
附图说明
图1为本发明一较佳实施例中各功能模块和处理层之间逻辑关系示意图;
图2为图1所示重定向客户端模块的处理流程示意图;
图3为图1所示重定向服务器端模块的处理流程示意图;
图4为本发明方法中发送数据包时采用的封装协议一具体实例示意图。
具体实施方式
下面结合附图及具体实施例对本发明再作进一步详细的说明。
本发明方法的主要设计思想为:在服务器的外设应用层下设置拦截模块与重定向客户端模块;在NC的外设驱动层之上设置重定向服务器端模块;服务器的外设应用层访问NC的外部设备的过程包括:所述拦截模块拦截来自服务器外设应用层的函数调用信息并发送至所述重定向客户端模块;然后,该重定向客户端模块将函数调用信息发送至NC中的重定向服务器端模块;最后,该重定向服务器端模块根据该函数调用信息调用本地NC的外设驱动层中的外设访问函数,从而访问该NC连接的外部设备。
下面以U-KEY为例,对本发明方法加以详细说明。首先介绍一下本发明相关的各功能模决和处理层之间的逻辑关系。图1为本发明一较佳实施例中各功能模块和处理层之间逻辑关系示意图。图1中,斜线填充的模块为本发明添加的功能模块,包括:拦截模块、重定向客户端模块、重定向服务器端模块。其它处理单元则为现有的与访问U-KEY相关的部分,包括:外设应用层、外设驱动层和U-KEY硬件;其中,外设应用层包括:基于U-KEY的上层应用、和U-KEY特有的用于进行身份认证的微软密码服务提供(CSP)接口,外设驱动层包括:外设中间件层即U-KEY中间件层、以及外设硬件驱动层即U-KEY硬件驱动层。从图1可见,本发明方法的处理涉及Windows服务器和NC,在Windows服务器中,与访问U-KEY相关的部分从上至下依次包括:基于U-KEY的上层应用、微软CSP接口、拦截模块、重定向客户端模块、U-KEY中间件、和U-KEY硬件驱动层;在NC中,与访问U-KEY相关的部分从上至下依次包括:重定向服务器端模块、U-KEY中间件层、U-KEY硬件驱动层、和U-KEY硬件。这里,由于本发明主要解决WBT模式下服务器访问外部设备出现的问题,因此所述服务器主要指Windows服务器。
在Windows服务器端,现有技术中,基于U-KEY的上层应用只能访问连接在本地的U-KEY,其发送的函数调用信息依次经由微软CSP接口、U-KEY中间件层处理,然后调用U-KEY硬件驱动层中的外设访问函数对U-KEY硬件进行操作。而本发明增加的拦截模块可以截获微软CSP接口原本发往U-KEY中间件层的函数调用信息,然后将其转发给重定向客户端模块;重定向客户端模块再将函数调用信息通过网络连接发往远端NC中的重定向服务器端模块;该重定向服务器端模块根据接收到的函数调用信息调用本地U-KEY中间件层中对应的函数接口,通过该函数接口调用本地U-KEY硬件驱动层中的外设访问函数,从而对NC连接的U-KEY硬件进行访问操作。由于,拦截模块截获了原本发往Windows服务器U-KEY中间件层的函数调用信息,Windows服务器中的U-KEY中间件层和U-KEY硬件驱动层将不会进行任何与访问U-KEY相关的处理。显然,Windows服务器安装U-KEY中间件层和U-KEY硬件驱动层软件与否,均不会影响本发明的处理。因此,图1中用虚线标识此U-KEY中间件层和U-KEY硬件驱动层,表明:Windows服务器中可设置U-KEY中间件层和U-KEY硬件驱动层、也可不设置U-KEY中间件层和U-KEY硬件驱动层。
根据以上对图1的描述可见,本发明方法的关键在于:一、使用拦截模块来拦截服务器外设应用层发往服务器外设驱动层的函数调用信息;二、采用重定向技术,由重定向客户端模块将拦截模块拦截到的函数调用信息重定向至远端NC的重定向服务器端模块,从而根据该来自服务器外设应用层的函数调用信息能够调用NC本地外设驱动层中的外设访问函数。
针对上述关键点之一的拦截模块,本发明提供了两种拦截模块实现拦截的方法:
一、当外部设备的外设驱动层中仅包含外设硬件驱动层时,拦截模块应设置在此外设硬件驱动层之上。此时,可以通过配置外设硬件驱动层的过滤驱动模块来实现该拦截模块,即将该拦截模块配置成该过滤驱动模块。所述过滤驱动模块能够接收所有来自外设应用层的数据,从而能够拦截到来自外设应用层的函数调用信息。其中,该过滤驱动模块的配置遵循协议规定的构架,比如:微软的协议规范目前已针对Windows系统提出了配置过滤驱动模块的标准构架,因此过滤驱动模块的具体配置原理与过程本文不作描述。
二、由于,本发明的主要为了解决U-KEY等外部设备无法实现从NC向Windows服务器的映射的问题,因此,针对U-KEY等这种具备外设中间件层处理的外部设备,本发明还提供了另一种拦截模块的实现方法,该方法的主要思想在于在拦截模块中构造与外设中间件层的动态链接库相似的动态链接库,并且对于外设应用层来说所构造的动态链接库应与外设中间件层的动态链接库相同。由于,只有动态链接库的标识、以及动态链接库中包含的各函数接口的标识对于外设应用层是可见的。因此,本发明可以在拦截模块中构造与外设中间件层原有的动态链接库具有相同标识的动态链接库,且所构造的动态链接库中各函数接口分别与外设中间件层的动态链接库中各函数接口具有相同标识,然后在服务器系统目录中使用所构造的动态链接库覆盖外设中间件层的动态链接库。这样,服务器外设应用层函数调用信息调用外设访问函数时,虽然对于服务器外设应用层而言,调用的仍是外设驱动层的函数接口,但实际上调用的是与该函数接口标识相同的拦截模块的函数接口,从而拦截模块可以成功截获来自外设应用层的函数调用信息,并无需对外设应用层的程序进行任何修改。这里,拦截模块的目的在于拦截而非函数处理,所以拦截模块的动态链接库中的各函数接口仅具备标识即可,不必构造函数接口对应的函数处理,也就是说:实际上拦截模块中包含的均是空的函数接口,可见,本发明拦截模块的实现并不会占用太多处理资源,实现起来也并不麻烦,不必编写过多代码。
通过前面所述可知,本发明方法的另一关键点就是:重定向客户端模块和重定向服务器端模块之间的重定向处理。下面结合图2和图3对所述重定向处理进行详细阐述。
图2为图1所示重定向客户端模块的处理流程示意图。如图2所示,具体处理包括:
步骤201:重定向客户端模块接收来自拦截模块的函数调用信息。
步骤202:重定向客户端模块创建用于进行网络传输的套接字(SOCKET),该SOCKET中包含Windows服务器的IP地址、当前进行网络传输时自身所使用的端口地址等,并通过调用RDP会话的应用程序接口(API)函数获取该函数调用信息对应的NC的IP地址。
步骤203:重定向客户端模块使用步骤202中所创建SOCKET,按步骤202所获取的NC的IP地址、以及该NC用于监听网络连接建立请求的端口地址发送网络连接建立请求。这里,预先在重定向客户端模块中配置NC用于监听网络连接建立请求的端口地址,Windows服务器连接的各个NC对应各自的端口地址。
随后,NC的重定向服务器端模块将根据该网络连接建立请求确定是否接受该请求,并在接受该请求时创建用于传输的SOCKET,即分配NC用于传输的端口地址等,返回指示接受连接的应答。然后,重定向客户端模块接收该应答,完成网络连接建立过程。所述来自重定向服务器端模块的应答将指示NC为当前建立的网络连接分配的用于传输的端口地址等参数,从而重定向客户端模块可以通过该网络连接向重定向服务器端模块传送数据。
上述步骤202和步骤203中,重定向客户端模块与重定向服务器端模块之间采用SOCKET技术来建立网络连接,也可以采用其它技术来建立网络连接,这里不再一一阐述。关于具体采用何种方法建立网络连接,本发明不进行限定。
步骤204:重定向客户端模块将接收到的函数调用信息封装成数据包保存至自身的发送缓冲区。所述函数调用信息,包括:函数编码、U-KEY在系统中的句柄、函数参数等。本步骤与上述步骤202和步骤203相互独立,因此可以与步骤202和步骤203并行执行。
步骤205:在网络连接建立完成之后,重定向客户端模块从发送缓冲区读取所保存的数据包,使用步骤202中创建的SOCKET,通过已建立的网络连接,将所读取的数据包发送给NC中的重定向服务器端模块。
这里,重定向客户端模块发送函数调用信息给重定向服务器端模块之后,该重定向服务器端模块将根据接收到的函数调用信息调用外设驱动层中的外设访问函数,完成对U-KEY硬件的访问操作。但考虑到外设访问函数的调用通常将返回函数执行结果、外设访问函数的返回值等函数调用结果数据,这些函数调用结果也需要返回给Windows服务器的外设应用层,因此在步骤205之后进一步包括:
步骤206:重定向客户端模块等待并通过所创建的SOCKET接收来自重定向服务器端模块的数据包,该数据包中封装了NC的U-KEY中间件层根据步骤204所述函数调用信息调用外设访问函数后返回的函数调用结果,该函数调用结果包括:外设访问函数的执行结果、以及外设访问函数的返回值等。
步骤207:重定向客户端模块解析接收到的数据包,得到步骤206所述函数调用结果,并将该函数调用结果通过拦截模块返回给微软CSP接口,从而将步骤201所述函数调用信息对应的函数调用结果返回给U-KEY的外设应用层;同时,重定向客户端模块还关闭自身在步骤202所创建的SOCKET,断开与重定向服务器端之间步骤203所建立的网络连接,完成本次函数调用过程。
图3为图1所示重定向服务器端模块的处理流程示意图。如图3所示,具体处理包括:
步骤301~步骤302:NC开机上电时启动重定向服务器端模块,重定向服务器端模块创建用于监听的SOCKET1,将SOCKET1与指定的端口地址绑定,监听重定向客户端模块发往该端口地址的网络连接建立请求。
从图2的描述可知,预先在重定向客户端模块中配置各NC用于监听网络连接建立请求的端口地址,本步骤所述指定端口地址即为重定向客户端模块中配置的当前NC用于监听网络连接建立请求的目的端口地址,从而重定向服务器端模块得以监听来自重定向客户端模块的网络连接建立请求。
步骤303:监听到来自重定向客户端模块的网络连接建立请求后,创建用于传输的SOCKET2,该SOCKET2中包含重定向客户端模块分配的用于传输的端口地址等信息,然后返回指示接受该请求的应答给重定向客户端模块,与重定向客户端模块建立网络连接。
这里,所述应答中包含SOCKET2的用于传输的端口地址等信息,从而重定向客户端模块可以根据该用于传输的端口地址发送数据包给重定向服务器端模块。
步骤304:等待并通过SOCKET2接收来自重定向客户端模块的数据包。
步骤305:对步骤304接收的数据包进行解析,得到该数据包中封装的函数调用信息。
步骤306:根据步骤305解析得到的函数调用信息调用NC本地U-KEY中间件层中对应的函数接口,进而调用NC本地U-KEY硬件驱动层中的外设访问函数,对连接在NC本地的U-KEY硬件进行访问操作。
此时,虽然对于U-KEY硬件的访问操作已完成,但考虑到外设访问函数的执行通常还将返回函数调用结果,该函数调用结果也应返回给Windows服务器外设应用层,因此在步骤306之后,进一步执行以下步骤:
步骤307:等待并接收来自NC本地U-KEY中间件层的函数调用结果,并将接收到函数调用结果封装成数据包。
步骤308:使用所创建的SOCKET2,通过已建立的网络连接,将步骤307封装的数据包发送至重定向客户端模块。
步骤309:关闭自身所创建的用于传输的SOCKET2,结束本次函数调用过程,返回步骤303,从而继续监听来自重定向客户端模块的网络连接建立请求。
图2和图3所述实施例中,重定向客户端模块和重定向服务器端模块所采用的工作方式为:针对每次外设访问函数的调用函数调用信息建立一次网络连接,并在每次外设访问函数调用结束后释放网络连接,具体来说就是:重定向客户端模块每接收到函数调用信息,就创建SOCKET、发送网络连接建立请求,并在接收到函数调用结果后关闭所创建的SOCKET、断开已建立的网络连接;而重定向服务器端模块每接收到网络连接建立请求,就创建用于传输的SOCKET、返回该请求的应答,并在发送了封装函数调用结果的数据包后,关闭该用于传输的SOCKET。采用此种方式使重定向客户端模块和重定向服务器端模块之间的网络连接稳定性较高,能够保证数据包传输的质量。
由于访问外部设备的完整过程应为:从打开外部设备开始、然后对外部设备进行除打开外部设备和关闭外部设备以外的其它操作、到关闭外部设备截止这一全过程,因此重定向客户端模块和重定向服务器端模块还可以采用另外一种工作方式:针对访问外部设备的完整过程建立一次网络连接,在打开外部设备时建立网络连接,对外部设备进行除打开外部设备和关闭外部设备以外的其它操作时使用已建立的网络连接,在关闭外部设备后释放网络连接,具体来说就是:对于重定向客户端模块而言,其接收到函数调用信息后首先判断该函数调用信息指示何种访问操作,当函数调用信息指示打开外部设备时,创建SOCKET、发送网络连接建立请求,在接收到函数调用结果后保持所创建的SOCKET和已建立的网络连接状态不变;当函数调用信息指示对外部设备进行除打开外部设备和关闭外部设备以外的其它操作时,使用已创建的SOCKET通过已建立的网络连接发送函数调用信息,在接收到函数调用结果后保持所创建的SOCKET和已建立的网络连接状态不变;当函数调用信息指示关闭外部设备时,使用已创建的SOCKET通过已建立的网络连接发送函数调用信息,在接收到函数调用结果后关闭所创建的SOCKET、断开已建立的网络连接。对于重定向服务器端模块而言,每接收到网络连接建立请求时,就创建用于传输的SOCKET、返回接受该请求的应答,在返回指示关闭外部设备的外设访问函数的函数调用结果并且网络连接断开后,关闭所创建的用于传输的SOCKET。
另外,为了实现对函数调用信息、以及函数调用结果的封装,可以预先规定封装协议,该协议可以包括两部分:从重定向客户端模块至重定向服务器端模块方向的上行协议、和从重定向服务器端模块至重定向客户端模块方向的下行协议。则在传送函数调用信息时,重定向客户端模块首先按上行协议封装数据包,然后重定向服务器端接收数据包时再按该上行协议解析数据包;而在传送函数调用结果时,重定向服务器端模块首先按下行协议封装数据包,然后重定向客户端模块再按该下行协议对接收到的数据包进行解析。其中,所述上行协议和下行协议的具体规定方式有多种,目的均在于使数据的接收端能够按协议规定识别接收到的一系列数据代表何种含义从而使用正确的参数进行操作。下面结合图4对所述上行协议和下行协议的具体规定方式进行举例说明。
图4为本发明方法中发送数据包时采用的封装协议一具体实例示意图。由于从Window服务器到NC方向上发送的函数调用信息包括:函数编码、U-KEY在系统中的句柄、函数编码、应传送给外设访问函数的函数参数等,因此,下行协议规定了各种函数调用信息在数据包中所在的字段。如图4所示,下行协议规定了封装函数调用信息的下行协议数据包中从首字节开始依次包括的数据分别为:数据包长度、函数编码、U-KEY在系统中的句柄、且此三种数据均占用4个字节,剩余字节则为传送给外设访问函数的函数参数,其所占字节数依不同的外设访问函数而有所不同。同理,由于从NC到Windows服务器方向上发送的函数调用结果包括:外设访问函数的执行结果、外设访问函数的返回值等,因此,上行协议规定了各种函数调用结果在数据包中所在的字段。如图4所示,上行协议规定了封装了函数调用结果的上行协议数据包中从首字节开始依次包括的数据分别为:数据包长度、外设访问函数的执行结果、且此两种数据均占用4个字节,剩余字节则为外设访问函数的返回值,其所占字节数依不同的外设访问函数而有所不同。这里,关于上行协议和下行协议的具体规定方式,本发明不进行限定,本文不再描述上行协议和下行协议的其它具体规定方式。
根据以上描述可见,本发明方法能够使Windows服务器中基于U-KEY的上层应用成功访问到远端NC连接的U-KEY硬件,从而实现U-KEY从NC向Windows服务器的映射。在用户使用U-KEY时,首先在NC上插入U-KEY,NC检测到有新硬件插入后,自身的外设驱动层加载该U-KEY硬件;当用户访问与U-KEY的身份认证相关的页面如:登录银行网站时,Windows服务器的U-KEY外设应用层软件通过本发明的拦截模块、重定向客户端模块、重定向服务器模块,调用NC本地外设驱动层中的外设访问函数,对该U-KEY进行身份认证等操作。比如:判断该U-KEY的用户名、密码等是否正确,如果是,则允许用户访问当前与U-KEY的身份认证相关的页面;否则禁止用户访问当前与U-KEY的身份认证相关的页面。
另外,本发明方法同样可以实现其他外部设备的映射功能,比如:扫描仪、声卡等外部设备。其中,前面已详细描述拦截模块实现拦截的方式,该实现拦截的方式适用于任何外部设备,因此这里不再描述本发明应用于其它外部设备时拦截模块拦截函数调用信息的实现过程。本发明应用于其它外部设备时,重定向客户端模块与重定向服务器端模块之间的重定向过程,可以采用与图2和图3所述基本相同的方法进行处理,所不同的是,有些外部设备可能不具备外设中间件层;但这并不影响本发明在现有技术基础上增加的拦截模块、重定向客户端模块和重定向服务器端模块的处理,只不过有关外设中间件层的处理不必进行,由重定向服务器端模块直接与外设硬件驱动层进行通讯,同样可以实现发明目的;因此,本文也不再详细描述重定向客户端模块与重定向服务器端模块之间的重定向过程。应用本发明方法后,NC的主板预先内嵌声卡,NC的外设驱动层加载该声卡硬件;用户通过Windows服务器的播放声音时,Windows服务器的声卡外设应用层软件通过本发明拦截模块、重定向客户端模块、重定向服务器端模块调用NC本地该声卡外设驱动层中的外设访问函数,对该声卡进行操作,使用户在NC端可以使用该声卡播放声音文件。
综上所述,应用本发明方法,服务器能够成功访问连接在NC上的各种外部设备,实现外部设备从NC向服务器的映射。值得一提的是,本发明实现了在WBT模式下U-KEY从NC向Windows服务器的映射功能,是对现有NC通讯协议的有益补充,使NC在金融、电信等特殊领域的应用成为可能,极大扩展了NC技术的发展空间。同时,本发明实现简单、稳定、可操作性较强,不失为一种较佳的实现外部设备映射的方法。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (10)
1、一种实现网络计算机的外部设备映射的方法,其特征在于,在服务器的外设应用层下设置拦截模块和重定向客户端模块;在网络计算机NC的外设驱动层之上设置重定向服务器端模块;服务器的外设应用层访问NC的外部设备的过程包括:
A.拦截模块拦截服务器外设应用层发送的访问NC外部设备的函数调用信息并发送至重定向客户端模块;
B.重定向客户端模块将接收到的函数调用信息发送至对应NC中的重定向服务器端模块;
C.NC中的重定向服务器端模块根据接收到的函数调用信息,调用NC的外设驱动层中的外设访问函数,访问该NC连接的外部设备。
2、根据权利要求1所述的方法,其特征在于,所述外设驱动层中仅包含外设硬件驱动层;
步骤A中,所述拦截模块拦截所述函数调用信息的方法为:
按协议规定的构架将所述拦截模块配置成所述外设硬件驱动层的过滤驱动模块;服务器外设应用层调用外设访问函数时,将函数调用信息发送至该拦截模块。
3、根据权利要求1所述的方法,其特征在于,所述外设驱动层中包含:外设中间件层和外设硬件驱动层;所述外设中间件层提供包含所有函数接口的动态链接库;
步骤A中,所述拦截模块拦截所述函数调用信息的方法为:
在拦截模块中,构造与所述外设中间件层提供的动态链接库具有相同标识的动态链接库,所构造的动态链接库中包含的各函数接口与外设中间件层中各函数接口具有相同的标识,并使用所构造的动态链接库覆盖服务器系统目录中的外设中间件层提供的动态链接库;服务器外设应用层调用外设访问函数时,调用所构造的动态链接库中的函数接口,将函数调用信息发送至拦截模块。
4、根据权利要求1所述的方法,其特征在于,步骤C中,所述重定向服务器端模块调用所述外设驱动层中的外设访问函数后,该方法进一步包括:NC的外设驱动层返回函数调用结果给所述重定向服务器端模块,该重定向服务器端模块再将接收到的函数调用结果返回给所述重定向客户端模块,该重定向客户端模块通过所述拦截模块将接收到的函数调用结果返回给服务器的外设应用层。
5、根据权利要求4所述的方法,其特征在于,所述重定向客户端模块和重定向服务器端模块通过建立网络连接传输函数调用信息和函数调用结果。
6、根据权利要求5所述的方法,其特征在于,步骤B中,重定向客户端模块接收到该函数调用信息后进一步判断该函数调用信息指示何种操作,
若所述函数调用信息指示打开外部设备,则重定向客户端模块建立自身与该函数调用信息对应的重定向服务器端模块之间的网络连接,通过当前建立的网络连接传输函数调用信息或函数调用结果;
若所述函数调用信息指示对外部设备进行除打开外部设备和关闭外部设备之外的其它操作,则重定向客户端模块通过已建立的网络连接传输函数调用信息和函数调用结果;
若所述函数调用信息指示关闭外部设备,则重定向客户端模块通过已建立的网络连接传输函数调用信息,并且,步骤C中,重定向客户端模块接收到该函数调用信息对应的函数调用结果后,进一步包括:释放所述已建立的网络连接。
7、根据权利要求5所述的方法,其特征在于,步骤B中,所述重定向客户端模块每次接收到函数调用信息后,建立自身与该函数调用信息对应的重定向服务器端模块之间的网络连接;
步骤C中,所述重定向服务器端模块每次返回函数调用结果后,进一步包括:释放所述当前建立的网络连接。
8、根据权利要求6或7所述的方法,其特征在于,所述建立网络连接的方法为:所述重定向客户端模块创建套接字SOCKET,获取所述重定向服务器端模块的IP地址,使用自身创建的SOCKET、按所获取的IP地址向重定向服务器端发送网络连接建立请求;
所述重定向服务器端模块预先创建用于监听的SOCKET,在该用于监听的SOCKET监听到来自重定向客户端模块的网络连接建立请求后,创建用于传输的SOCKET,返回应答给重定向客户端模块,网络连接建立;
所述释放网络连接的方法为:所述重定向客户端模块关闭自身创建的SOCKET,断开网络连接;所述重定向服务器端模块关闭自身创建的用于传输的SOCKET。
9、根据权利要求2至4任一项所述的方法,其特征在于,步骤B中,所述重定向客户端模块将所述函数调用信息封装成数据包,再将所封装的数据包发送至所述重定向服务器端模块,该重定向服务器端模块解析接收到的数据包得到所述函数调用信息;
步骤C中,所述重定向服务器端模块将接收到的函数调用结果封装成数据包,再将所封装的数据包返回给所述重定向客户端模块,该重定向客户端模块解析接收到的数据包得到函数调用结果。
10、根据权利要求1至4任一项所述的方法,其特征在于,所述外部设备为:USB接口的身份认证硬件U-KEY、或扫描仪、或Windows2000系统的声卡;所述服务器为Windows服务器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100598444A CN100505734C (zh) | 2005-03-31 | 2005-03-31 | 一种实现网络计算机的外部设备映射的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100598444A CN100505734C (zh) | 2005-03-31 | 2005-03-31 | 一种实现网络计算机的外部设备映射的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1842073A true CN1842073A (zh) | 2006-10-04 |
CN100505734C CN100505734C (zh) | 2009-06-24 |
Family
ID=37030917
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005100598444A Active CN100505734C (zh) | 2005-03-31 | 2005-03-31 | 一种实现网络计算机的外部设备映射的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100505734C (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101951361A (zh) * | 2010-07-30 | 2011-01-19 | 北京握奇数据系统有限公司 | 访问智能卡的方法及服务器 |
CN102104553A (zh) * | 2009-12-16 | 2011-06-22 | 浙江省公众信息产业有限公司 | 一种基于ActiveX控件的即时消息响应系统和方法 |
CN102752412A (zh) * | 2012-07-04 | 2012-10-24 | 深圳市京华科讯科技有限公司 | Wan环境下端口映射方法及系统 |
CN103051716A (zh) * | 2012-12-25 | 2013-04-17 | 中标软件有限公司 | 一种面向网络的串口设备重定向的方法及系统 |
CN103425922A (zh) * | 2013-08-14 | 2013-12-04 | 广州尚融网络科技有限公司 | 基于csp获取远端加密指令的方法及系统 |
CN105404503A (zh) * | 2015-10-22 | 2016-03-16 | 成都卫士通信息产业股份有限公司 | 一种支持多终端远程并行访问智能卡的方法 |
CN109656757A (zh) * | 2018-11-20 | 2019-04-19 | 广东微云科技股份有限公司 | Usb设备重定向问题的智能诊断方法 |
CN109982121A (zh) * | 2019-03-28 | 2019-07-05 | 烽火通信科技股份有限公司 | 一种机顶盒、云端虚拟系统以及设备重定向方法 |
CN112463897A (zh) * | 2020-10-14 | 2021-03-09 | 麒麟软件有限公司 | 一种定位数据重定向的方法及系统 |
CN112733091A (zh) * | 2020-12-31 | 2021-04-30 | 北京深思数盾科技股份有限公司 | 一种应用程序访问外接设备的控制方法及装置 |
CN112925591A (zh) * | 2021-01-25 | 2021-06-08 | 北京房江湖科技有限公司 | 用于拦截调用路由方法的方法和装置 |
-
2005
- 2005-03-31 CN CNB2005100598444A patent/CN100505734C/zh active Active
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102104553A (zh) * | 2009-12-16 | 2011-06-22 | 浙江省公众信息产业有限公司 | 一种基于ActiveX控件的即时消息响应系统和方法 |
CN101951361B (zh) * | 2010-07-30 | 2013-04-24 | 北京握奇数据系统有限公司 | 访问智能卡的方法及服务器 |
CN101951361A (zh) * | 2010-07-30 | 2011-01-19 | 北京握奇数据系统有限公司 | 访问智能卡的方法及服务器 |
CN102752412B (zh) * | 2012-07-04 | 2015-07-01 | 深圳市京华科讯科技有限公司 | Wan环境下端口映射方法及系统 |
CN102752412A (zh) * | 2012-07-04 | 2012-10-24 | 深圳市京华科讯科技有限公司 | Wan环境下端口映射方法及系统 |
CN103051716A (zh) * | 2012-12-25 | 2013-04-17 | 中标软件有限公司 | 一种面向网络的串口设备重定向的方法及系统 |
CN103425922B (zh) * | 2013-08-14 | 2016-12-28 | 广州尚融网络科技有限公司 | 基于csp获取远端加密指令的方法及系统 |
CN103425922A (zh) * | 2013-08-14 | 2013-12-04 | 广州尚融网络科技有限公司 | 基于csp获取远端加密指令的方法及系统 |
CN105404503A (zh) * | 2015-10-22 | 2016-03-16 | 成都卫士通信息产业股份有限公司 | 一种支持多终端远程并行访问智能卡的方法 |
CN109656757A (zh) * | 2018-11-20 | 2019-04-19 | 广东微云科技股份有限公司 | Usb设备重定向问题的智能诊断方法 |
CN109656757B (zh) * | 2018-11-20 | 2022-03-15 | 广东微云科技股份有限公司 | Usb设备重定向问题的智能诊断方法 |
CN109982121A (zh) * | 2019-03-28 | 2019-07-05 | 烽火通信科技股份有限公司 | 一种机顶盒、云端虚拟系统以及设备重定向方法 |
CN109982121B (zh) * | 2019-03-28 | 2021-07-06 | 烽火通信科技股份有限公司 | 一种机顶盒、云端虚拟系统以及设备重定向方法 |
CN112463897A (zh) * | 2020-10-14 | 2021-03-09 | 麒麟软件有限公司 | 一种定位数据重定向的方法及系统 |
CN112463897B (zh) * | 2020-10-14 | 2023-06-02 | 麒麟软件有限公司 | 一种定位数据重定向的方法及系统 |
CN112733091A (zh) * | 2020-12-31 | 2021-04-30 | 北京深思数盾科技股份有限公司 | 一种应用程序访问外接设备的控制方法及装置 |
CN112925591A (zh) * | 2021-01-25 | 2021-06-08 | 北京房江湖科技有限公司 | 用于拦截调用路由方法的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN100505734C (zh) | 2009-06-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1842073A (zh) | 一种实现网络计算机的外部设备映射的方法 | |
CN1199418C (zh) | 安全会话定序的代理系统及其方法 | |
US8579202B2 (en) | Smart card-based browsing system and smart card-based browsing method and smart card for the same | |
US8099456B2 (en) | Application programming interface for implementing directory service access using directory service markup language | |
EP1896943A1 (en) | Offload stack for network, block and file input and output | |
CN1574798A (zh) | 受控跨网络边界媒体流中继机 | |
AU2005304469A1 (en) | System and method for providing client identifying information to a server | |
CN1292116A (zh) | 保密要求的按照方法指定 | |
US7627899B1 (en) | Method and apparatus for improving user experience for legitimate traffic of a service impacted by denial of service attack | |
JP2008524878A (ja) | キュー非同期通信アーキテクチャーインタフェース | |
CN1848883A (zh) | 呼叫系统、代理拨号服务器设备及与之一起使用的代理拨号方法及程序 | |
CN1831802A (zh) | 将模块耦合到互连上的管理控制器的方法和装置 | |
CN101521683A (zh) | 一种网络游戏系统及其接入方法、客户端通讯方法 | |
CN1930850A (zh) | 对自服务客户向服务提供者发送的服务请求进行认证和授权的设备、计算机可读存储器和方法 | |
CN1456009A (zh) | 用于限制伴随有执行应用程序的呼叫发起的方法和装置 | |
US20140366109A1 (en) | Secure messaging facility system | |
US20020169967A1 (en) | Method and apparatus for multiple token access to thin client architecture session | |
CN1157664C (zh) | 具有mime数据类型过滤技术的ssl代理方法 | |
CN101051967A (zh) | 用户网络中用户设备的通信系统及其方法 | |
CN101079695A (zh) | 一种网络安全验证系统及方法 | |
US8601094B2 (en) | Method and computer program product utilizing multiple UDP data packets to transfer a quantity of data otherwise in excess of a single UDP packet | |
CN1556609A (zh) | 移动机器人网络化控制平台装置 | |
US6826634B2 (en) | Extended message block for network device drivers | |
CN1264377C (zh) | 便携信息终端、无线通信系统及连接确立方法 | |
CN1142658C (zh) | 一种利用网络的数据交换方法及其系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |