CN102736936B - 一种控制台程序远程交互的方法 - Google Patents

一种控制台程序远程交互的方法 Download PDF

Info

Publication number
CN102736936B
CN102736936B CN201210175830.9A CN201210175830A CN102736936B CN 102736936 B CN102736936 B CN 102736936B CN 201210175830 A CN201210175830 A CN 201210175830A CN 102736936 B CN102736936 B CN 102736936B
Authority
CN
China
Prior art keywords
console program
command
console
window
control
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.)
Expired - Fee Related
Application number
CN201210175830.9A
Other languages
English (en)
Other versions
CN102736936A (zh
Inventor
宋宇波
唐磊
蓝智灵
石乐
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Southeast University
Original Assignee
Southeast University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Southeast University filed Critical Southeast University
Priority to CN201210175830.9A priority Critical patent/CN102736936B/zh
Publication of CN102736936A publication Critical patent/CN102736936A/zh
Application granted granted Critical
Publication of CN102736936B publication Critical patent/CN102736936B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明公开了一种控制台程序远程交互的方法,控制台程序是与视窗操作系统中没有独立交互窗口只在命令行窗口运行的程序,该方法将本地控制台加载器的窗口附着在控制台程序所属的命令行窗口上,采用模拟键盘输入到控制台程序命令行窗口输入缓冲区的方式作为其输入,采用从控制台程序的命令行窗口输出缓冲区读取数据的方式作为其输出,并通过网络将控制命令和回显数据与远程主机控制端程序进行数据通信,从而实现与控制台程序的远程交互。该方法对系统软件和控制台程序具有良好的兼容性和稳定性。

Description

一种控制台程序远程交互的方法
技术领域
本发明属于计算机技术领域,具体来说,涉及一种控制台程序远程交互的方法。
背景技术
近年来,随着计算机技术的不断发展,通过远程交互来与远程应用程序通信已经成为越来越多用户的选择。通过网络远程交互运行各种应用或服务程序,人们可以更方便地实现远程办公等工作。因此,远程交互有着巨大的市场前景。在现有的计算机操作系统中,Microsoft Windows系统因其卓越的易用性和绚丽的视觉效果成为计算机系统中大众用户的首选。
控制台程序是Windows为了兼容DOS程序而设立的,是没有独立窗口的程序,一般在命令行下(cmd.exe)运行。控制台程序的输入输出是通过标准I/O进行的,不像界面程序可以通过鼠标点击进行操作。一般后台运行的程序可作为控制台应用程序。
所谓远程交互,是指用户在异地通过网络与本地计算机通信。随着网络的高速发展,电脑远程交互技术越来越引起人们的关注。目前远程交互的主要应用包括:远程办公、远程教育、远程维护和远程协助等。
Windows系统主要提供了两种与系统交互的方式:可视化操作和命令行操作。基于可视化操作,Windows系统提供了如远程桌面连接等途径;而在命令行操作方面, 现有的实现命令行操作的常规方法主要是将控制台程序窗口的标准输入输出重定向到其父进程的发送/接收管道上,或者是重定向到用于远程通信的基于TCP/IP的套接字上。该方法容易与其他软件发生冲突,导致系统不稳定。
由于系统自带的和一些常用的第三方控制台程序只能用于本机操作,没有添加远程通信的模块,为了将控制台程序用于远程交互,需要修改控制台程序源代码,在程序中添加与远程通信的接口,因此该方法无法适用于非开源的控制台程序,即对于控制台程序的兼容性较差。
发明内容
技术问题:本发明所要解决的技术问题是:提供一种控制台程序远程交互的方法,该方法可以克服现有技术中容易与其他软件冲突并导致系统不稳定的不足,即对系统软件具有良好的兼容性,且系统稳定;同时,本发明能够用于常用的各种控制台程序,即对控制台程序具有良好的兼容性。
技术方案:为解决上述技术问题,本发明采用的技术方案是:
一种控制台程序远程交互的方法,该方法包括以下步骤:
第一步:用户通过人机交互模块向远程主机控制端输入控制命令;
第二步:远程主机控制端接收到控制命令后,将控制命令通过网络传送给本地控制台程序加载器;
第三步:本地控制台程序加载器接收到控制命令,如果控制命令是结束命令,则进入第八步;如果控制命令不是结束命令,通过控制台交互模块将控制命令传给控制台程序;
第四步:控制台程序处理接收到的控制命令,并输出回显数据;
第五步:本地控制台程序加载器通过控制台交互模块获取控制台程序的回显数据;
第六步:本地控制台程序加载器通过网络将回显数据传送给远程主机控制端;
第七步:远程主机控制端将接收到的回显数据通过人机交互模块显示给用户,然后返回第一步;
第八步:远程主机控制端结束自身进程,本地控制台程序加载器结束控制台程序的进程,然后结束输入输出线程,并结束自身进程。
有益效果:与现有技术相比,本发明具有的有益效果是:对系统软件和控制台程序具有良好的兼容性,且系统稳定。现有的交互的方法需要对控制台程序的标准输入输出进行重定向,从而容易与其他软件发生冲突,导致系统不稳定。而本发明的技术方案中,为了增强对控制台程序的兼容性,本发明的交互系统提出了一种全新的架构:包括远程主机控制端、本地控制台程序加载器和控制台程序,远程主机控制端包括人机交互模块和远程通信模块,本地控制台程序加载器包括本地通信模块和控制台交互模块。在保证控制台程序完整性的前提下,为控制台程序提供了一个加载器,由加载器与控制台程序进行交互,加载器通过采用Windows套接字(Winsock),利用TCP/IP协议与远程用户进行命令和数据的传输,从而实现控制台程序的远程交互。本交互系统将加载控制台程序的父进程的命令行窗口附着在其命令行窗口上,采用了模拟键盘输入到控制台程序命令行窗口输入缓冲区的方式作为其输入,并通过从控制台程序的命令行窗口输出缓冲区读取数据作为其输出,从而实现非重定向条件下与控制台程序的交互,并通过网络将控制命令和回显数据与远程主机控制端进行数据通信,实现与控制台程序的远程交互。本发明的技术方案对系统软件和控制台程序具有良好的兼容性,且系统稳定。
附图说明
图1为本发明的流程图。
图2为本发明中的远程主机控制端的流程图。
图3为本发明中的本地控制台程序加载器的流程图。
图4为实现本发明的功能模块和控制台程序之间的连接框图。
图中有:用户101、远程主机控制端102、人机交互模块103、远程通信模块104、本地控制台程序加载器105、本地通信模块106、控制台交互模块107、控制台程序108。
具体实施方式
以下结合附图对本发明的关键技术和各模块进行详细实例说明。
实施本发明的网络环境:互联网/局域网;硬件设备:两台PC机;运行平台:Windows XP;控制台程序:cmd.exe。控制台程序是与视窗操作系统中没有独立交互窗口只在命令行窗口运行的程序。
如图1所示,本发明的控制台程序远程交互的方法,包括以下步骤:
第一步:用户101通过人机交互模块103向远程主机控制端102输入控制命令。
第二步:远程主机控制端102接收到控制命令后,将控制命令通过网络传送给本地控制台程序加载器105。
第三步:本地控制台程序加载器105接收到控制命令,如果控制命令是结束命令,则进入第八步;如果控制命令不是结束命令,通过控制台交互模块107将控制命令传给控制台程序108。
在第三步中,通过控制台交互模块107将控制命令传给控制台程序108是指:本地控制台程序加载器105将自身的命令行窗口与控制台程序108的命令行窗口对接,将控制命令作为控制台程序108命令行窗口的输入传递给控制台程序108。本地控制台程序加载器105将自身的命令行窗口与控制台程序108的命令行窗口对接是指:将本地控制台程序加载器105的命令行窗口附着在控制台程序108的命令行窗口上。将控制命令作为控制台程序108命令行窗口的输入传递给控制台程序108可以采用模拟键盘输入的方式,将控制命令输入到控制台程序108命令行窗口的输入缓冲区中。
第四步:控制台程序108处理接收到的控制命令,并输出回显数据。
第五步:本地控制台程序加载器105通过控制台交互模块107获取控制台程序108的回显数据。
在第五步中,本地控制台程序加载器105通过控制台交互模块107获取控制台程序108的回显数据是指:控制台交互模块107从控制台程序108命令行窗口的输出缓冲区获取控制台程序108处理完控制命令后的回显数据。
第六步:本地控制台程序加载器105通过网络将回显数据传送给远程主机控制端102。
第七步:远程主机控制端102将接收到的回显数据通过人机交互模块103显示给用户101,然后返回第一步。
第八步:远程主机控制端102结束自身进程,本地控制台程序加载器105结束控制台程序108的进程,然后结束输入输出线程,并结束自身进程。
如图2所示,本发明中的远程主机控制端102的工作过程是:远程主机控制端102进行初始化,与本地控制台程序加载器105建立连接,做好通信准备;连接成功后,用户101对远程主机控制端102进行配置,输入控制命令;远程主机控制端102接收到用户101输入的控制命令,将控制命令通过网络发送给本地控制台程序加载器105,如果控制命令是结束命令,远程主机控制端102则结束自身进程,如果不是结束命令,远程主机控制端102等待接收回显数据;远程主机控制端102接收到回显数据,将回显数据通过人机交互模块103显示给用户101。
如图3所示,本发明中的本地控制台程序加载器105的工作过程是:本地控制台程序加载器105进行初始化,并与远程主机控制端102的连接;连接成功后,本地控制台程序加载器105创建控制台程序108子进程,并将自身的命令行窗口附着在控制台程序108的命令行窗口上,然后创建与控制台程序108命令行窗口交互的输入输出线程,等待接收控制命令和回显数据;本地控制台程序加载器105接收到控制命令,如果是结束命令,则终止输入输出双线程,并结束控制台程序108子进程以及自身进程;如果不是结束命令,将控制命令作为控制台程序108命令行窗口的输入,利用模拟键盘输入方式传递给控制台程序108;当控制台程序108处理完控制命令输出回显数据后,本地控制台程序加载器105通过控制台交互模块107从控制台程序108的命令行窗口输出缓冲区获取回显数据,然后将数据通过网络发送给远程主机控制端102。
如图4所示,本发明的控制台程序远程交互的方法通过相关设备和软件实现,具体来说,包括远程主机控制端102、本地控制台程序加载器105和控制台程序108。远程主机控制端102与本地控制台程序加载器105通过有线/无线网络连接。本地控制台程序加载器105和控制台程序108的窗口输入输出缓冲区连接。远程主机控制端102包括人机交互模块103和远程通信模块104。人机交互模块103用于接收用户101输入的命令和向用户101发送回显数据,用户101通过键盘或鼠标与人机交互模块103连接。远程通信模块104用于向本地控制台程序加载器105发送命令和接收本地控制台程序加载器105发送的回显数据。人机交互模块103和远程通信模块104之间通过内存共享方式进行通信。本地控制台程序加载器105包括本地通信模块106和控制台交互模块107,本地通信模块106用于从远程主机控制端102接收命令和向远程主机控制端102发送回显数据。控制台交互模块107用于向控制台程序108输入命令和获取控制台程序108输出的回显数据。本地通信模块106通过TCP/IP协议与远程通信模块104进行通信。本地通信模块106与控制台交互模块107之间通过内存共享方式进行通信。控制台交互模块107和控制台程序108命令行窗口输入输出缓冲区连接。
本发明中的远程主机控制端102运行在一台远程PC机上,它的作用是通过人机交互模块103接收用户101输入的控制命令,通过远程通信模块104,将控制命令经由网络发送给本地控制台程序加载器105。本地控制台程序加载器105通过本地通信模块106接收远程主机控制端102发送的命令,将控制命令由控制台交互模块107作为命令行窗口的输入传给控制台程序108;控制台程序108处理完相应命令后,向命令行窗口输出回显数据,本地控制台程序加载器105的控制台交互模块107从控制台程序的命令行窗口输出缓冲区中获取回显数据,再将回显数据通过本地通信模块106由网络发送给远程主机控制端102。远程主机控制端102通过远程通信模块104接收回显数据,再将回显数据通过人机交互模块103显示给用户101。
下面详细介绍在Windows环境下控制台交互模块107的具体实施方法。
Microsoft的Windows系统提供一整套API函数库方便编程人员进行二次开发。如图2中的控制台交互模块107流程所示,控制台交互模块107的具体实施方法具体步骤如下:
1) 控制台交互模块107调用CreateProcess函数,创建控制台程序108子进程(cmd子进程)。
2)调用AttachConcole函数,将本地控制台程序加载器105的命令行窗口附着在cmd子进程的命令行窗口上。这样做的结果是本地控制台程序加载器105的命令行窗口的输入会成为cmd子进程窗口的输入,cmd子进程窗口的输出会成为本地控制台程序加载器105的命令行窗口的输出。因此只需要操作本地控制台程序加载器105的命令行窗口,既可以实现与cmd子进程命令行窗口的交互。
3)调用CreateThread函数创建用于传递命令行窗口输入输出数据的I/O双线程。
4)当控制台交互模块107收到远程发送来的用户命令时,如果是退出命令,则控制台交互模块107终止I/O双线程,然后结束cmd子进程并退出自身程序;如果不是退出命令,输入线程调用CreateFile函数,打开“CONIN$”,即cmd子进程命令行窗口的输入缓冲区,结构INPUT_RECORD描述了命令行窗口输入缓冲区的一个输入事件,键盘的一次按键的事件可以存储的一个INPUT_RECORD结构中,因此,将输入命令的字符存储在INPUT_RECORD结构数组中,调用WriteConsoleInput函数将命令输入到命令行窗口中,即模拟键盘输入的技术。
5)当cmd子进程命令行窗口产生回显数据时,输出线程调用CreateFile函数,打开“CONOUT$”,即cmd子进程命令行窗口的输出缓冲区,调用GetConsoleScreenBufferInfo函数,获取cmd子进程命令行窗口的大小(宽高),根据大小确定一次从输出缓冲区中读取的字符数,再调用ReadConsoleOutputCharacter函数,从输出缓冲区中读取相应的字符。

Claims (3)

1.一种控制台程序远程交互的方法,其特征在于,该方法包括以下步骤:
第一步:用户(101)通过人机交互模块(103)向远程主机控制端(102)输入控制命令;
第二步:远程主机控制端(102)接收到控制命令后,将控制命令通过网络传送给本地控制台程序加载器(105);
第三步:本地控制台程序加载器(105)接收到控制命令,如果控制命令是结束命令,则进入第八步;如果控制命令不是结束命令,通过控制台交互模块(107)将控制命令传给控制台程序(108);
第四步:控制台程序(108)处理接收到的控制命令,并输出回显数据;
第五步:本地控制台程序加载器(105)通过控制台交互模块(107)获取控制台程序(108)的回显数据;
第六步:本地控制台程序加载器(105)通过网络将回显数据传送给远程主机控制端(102);
第七步:远程主机控制端(102)将接收到的回显数据通过人机交互模块(103)显示给用户(101),然后返回第一步;
第八步:远程主机控制端(102)结束自身进程,本地控制台程序加载器(105)结束控制台程序(108)的进程,然后结束输入输出线程,并结束自身进程;
在所述的第三步中,通过控制台交互模块(107)将控制命令传给控制台程序(108)是指:本地控制台程序加载器(105)将自身的命令行窗口与控制台程序(108)的命令行窗口对接,将控制命令作为控制台程序(108)命令行窗口的输入传递给控制台程序(108);
在所述的第五步中,本地控制台程序加载器(105)通过控制台交互模块(107)获取控制台程序(108)的回显数据是指:控制台交互模块(107)从控制台程序(108)命令行窗口的输出缓冲区获取控制台程序(108)处理完控制命令后的回显数据。
2.按照权利要求1所述的控制台程序远程交互的方法,其特征在于,所述的本地控制台程序加载器(105)将自身的命令行窗口与控制台程序(108)的命令行窗口对接是指:将本地控制台程序加载器(105)的命令行窗口附着在控制台程序(108)的命令行窗口上。
3.按照权利要求1所述的控制台程序远程交互的方法,其特征在于,所述的将控制命令作为控制台程序(108)命令行窗口的输入传递给控制台程序(108)是指:采用模拟键盘输入的方式,将控制命令输入到控制台程序(108)命令行窗口的输入缓冲区中。
CN201210175830.9A 2012-05-31 2012-05-31 一种控制台程序远程交互的方法 Expired - Fee Related CN102736936B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210175830.9A CN102736936B (zh) 2012-05-31 2012-05-31 一种控制台程序远程交互的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210175830.9A CN102736936B (zh) 2012-05-31 2012-05-31 一种控制台程序远程交互的方法

Publications (2)

Publication Number Publication Date
CN102736936A CN102736936A (zh) 2012-10-17
CN102736936B true CN102736936B (zh) 2015-01-28

Family

ID=46992489

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210175830.9A Expired - Fee Related CN102736936B (zh) 2012-05-31 2012-05-31 一种控制台程序远程交互的方法

Country Status (1)

Country Link
CN (1) CN102736936B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104333593B (zh) * 2014-11-04 2018-04-17 成都乐创自动化技术股份有限公司 运动控制器远程控制方法、故障诊断方法及远程控制系统
CN106993046A (zh) * 2017-04-13 2017-07-28 儒安科技有限公司 在网页端实现远程操作系统命令行控制台的方法和装置
CN111240658B (zh) * 2018-11-29 2022-06-07 福建省天奕网络科技有限公司 一种基于Unity引擎的控制台实现方法及终端
CN111221605B (zh) * 2019-11-18 2022-07-08 杭州安恒信息技术股份有限公司 基于RDP协议的控制Windows主机的方法及装置
CN111556346B (zh) * 2020-04-07 2023-09-12 视联动力信息技术股份有限公司 远程控制视联网终端的方法、装置及计算机可读存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1581794A (zh) * 2003-08-05 2005-02-16 华为技术有限公司 一种通讯设备远程控制的方法和系统
CN101102322A (zh) * 2007-08-24 2008-01-09 华为技术有限公司 一种通过图形化界面实现远程控制的方法、系统及客户端

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7844442B2 (en) * 2005-08-16 2010-11-30 Exent Technologies, Ltd. System and method for providing a remote user interface for an application executing on a computing device

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1581794A (zh) * 2003-08-05 2005-02-16 华为技术有限公司 一种通讯设备远程控制的方法和系统
CN101102322A (zh) * 2007-08-24 2008-01-09 华为技术有限公司 一种通过图形化界面实现远程控制的方法、系统及客户端

Also Published As

Publication number Publication date
CN102736936A (zh) 2012-10-17

Similar Documents

Publication Publication Date Title
CN102736936B (zh) 一种控制台程序远程交互的方法
CN105477854B (zh) 应用于智能终端的手柄控制方法、装置及系统
CN111126781A (zh) Rpa业务流程的创建方法及系统
CN204759403U (zh) 一种基于数据透传实现设备内部模块升级的系统
CN103995777A (zh) 嵌入式软件黑盒自动化测试系统及测试方法
CN109002366A (zh) 一种移动端网页的远程调试方法及装置
CN102141893B (zh) 面向大幅面交互式桌面的多用户窗口系统
CN102468971A (zh) 权限管理方法和装置、权限控制方法和装置
CN102739612A (zh) 远程控制方法及中介服务器
CN106648674A (zh) 一种大数据计算管理方法及系统
CN105955690A (zh) 一种计算机多屏切换装置及方法
CN104426990A (zh) 一种控制方法和装置
CN109815120A (zh) 应用的测试方法、装置、计算机设备和存储介质
KR101243441B1 (ko) 재구성 가능한 컴포넌트 기반의 plc 시뮬레이터
KR20160086836A (ko) 정보 처리 장치, 정보 처리 방법 및 정보 처리 시스템
CN110392053A (zh) 容器访问控制方法、装置、客户端及服务器
CN108616643A (zh) 通过计算设备控制手机的方法、装置及系统
CN101409731A (zh) 通过ie远程对家庭电器设备控制的方法
US5664103A (en) System for using an independent mediator for monitoring control data and transferring selected control data to a remote computer for concurrent processing
CN106789449A (zh) 一种can总线开发与测试方法及系统
CN103279382A (zh) 原生方式访问资源的方法、Java端、原生端及系统
CN108737337B (zh) 设备处理方法、装置、服务器及系统
CN102929159B (zh) 一种仿真模型状态控制方法与装置
CN107943625A (zh) 一种可模拟多种通讯接口的mcu测试方法
CN102243489B (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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20150128

Termination date: 20170531

CF01 Termination of patent right due to non-payment of annual fee