【VB开源代码栏目提醒】:文章导读:在新的一年中,各位网友都进入紧张的学习或是工作阶段。
网学会员整理了VB开源代码-自己动手编制支持终端打印的TELNET程序-计算机论文 - 其它论文的相关内容供大家参考,祝大家在新的一年里工作和学习顺利!
自己动手编制支持终端打印的TELNET程序-
计算机论文 真诚为您服务 上午114350 前言在行业用户中大多数基层计算机应用系统采用UNIX作OS用支持RS232连接的终端做业务处理打印也通过终端实现。
随着PC机拥有量的不断增加通过网卡、HUB就可把服务器与PC机连接起来然后在PC机上用TELNET登录上服务器就可把PC机作终端用了。
美中不足的是无法在PC机上实现终端打印某些TELNET类软件也只支持透明打印方式的一种指令无法满足终端打印的要求。
为了减少硬件的投入提高现有设备的利用率我们自己动手做了一个这样的
软件能使PC机完全代替终端使用暂且称该软件为TELVT100下面来一步一步实现它。
首先考虑一下TELVT100要实现哪些功能一、PC机与服务器的连接二、能虚拟终端显示目前绝大部分UNIX上的应用系统支持VT100终端类型因此主要实现VT100终端类型的虚拟三、把打印内容进行转换并送到与PC机相连的打印机上。
现在分步骤对以上三部分说明我们采用
VB5.0作为开工具由于程序条数较多所以只列出与主要文字叙述相关的部分程序段。
??变量的定义及初始化PublicZtdiAsIntegerPublicIPAddRAsStringPublicRmtPtrasIntegerPublicDaBulenasLong......PrivateSubForm_Load??初始化处理ZtdiPrinter.Font.Size??打印字体大小I PAddR“32.145.24.1“??设置服务器的IP地址RmtPtr0??指令指针DaBuLen0??打印缓存大小Winsock.Protocol0??设定协议为TCP/IP......EndSub一、PC机与服务器的TELNET连接要实现PC机与服务器的TEL
NET协议连接必须先以TCP/IP协议连接PC机与服务器。
给服务器端加网卡并对网卡和TCP/IP协议进行设置开放TELNET连接设置端口地址为23。
给PC机装上网卡并配置网卡和TCP/IP协议。
我们在PC机上编制相应的客户端程序来实现TCP/IP连接。
在这里主要用到
VB中Winsock控件下面了解一下它的有关性能。
它提供了访问TCP/IP网络服务的方便途径用它编写客户端应用
程序不必了解TCP/IP的细节通过设置控件的属性并调用其方法就可连接到服务器上去即把控件的RemoteHost属性设置为服务器的IP地址把RemotePort属性设置为服务器“侦听”的端口地址然后调用Connect方法实现与指定的IP地址服务器连接。
建立连接后服务器与PC机就可以互相收发数据。
为了发送数据要调用SendData方法。
当客户端接收到数据时会发生DataArrival事件在DataArrival事件内调用GetData方法就可获取数据。
连接建好后PC机与服务器用TELNET协议命令建立协调机制。
命令共有15条每条命令前都要加上字符IAC指出紧跟着的字符是命令。
代码250和
代码240用作命令的分界符其余命令可分为两类。
基本命令由
代码241-249代表它们执行TELNET的基本功能磋商选择命令由
代码251-254表示这类命令主要实现两进程间磋商各种可选扩充功能。
命令
列表具体解释请查阅有关资料。
二、实现VT100终端类型的虚拟、在有关窗体上加入一个TEXT控件设为Text1在Text1.KeyPress事件中获得PC机的键盘输入然后把相应键值变更为VT100终端键盘所对应的键值把该值用Winsock控件的SendData方法发送给服务器并禁止向TEXT控件的输出。
、服务器接收键值后作出相应的处理并把输出的内容发送给对应的客户端我们在Winsock控件的DataArrival事件中调用Winsock控件的GetData方法来获得服务器发来的数据。
、我们获得的从服务器发来的数据中包含终端的控制指令。
必须把控制指令分离出来并做相应处理同时把显示数据送到显示界面的指定位置。
有关VT100终端指令的具体说明请查阅有关技术手册这里以光标定位指令ESC8030的地方。
具体实现过程如下??接收键盘输入、与服务器连接并向服务器发送PrivateSubText1_KeyPressDimchasString??判定
网络连接是否处于正常状态IfWinsock1.State0AndWinsock1.State7ThenchMsgBoxKeyAscii0??封锁键盘输入ExitSub??退出本事件EndIfIfWinsock1.State0Then??网络处于断开状态IPADDRWinsock1.RemoteHostWinsock1.ConnectIPAddR23??与服务器连接ElseWinsock1.SendDataStrConv8??向服务器发送键盘输入EndIfKeyAscii0??禁止向Text控件送键值EndSub??接收服务器向客户端发送的数据PrivateSubnewRecdata??虚拟终端处理函数......Print_ComXCHRR??调用打印指令处理函数......EndSubPrivateSubTelnet_Com??T ELNET指令过滤函数??要把相应的应答指令直接发送给服务器......EndSubPrivateSubWinsock1_DataArrival??数据到达以后触发该事件DimCHRRAsVariantWinsock1.GetDataCHRR??读取接收到的数据Telnet_ComCHRR??TELNET指令过滤函数newRecdataCHRR??虚拟终端处理函数EndSub三、在PC机上实现终端打印在终端机上主要有屏幕打印、拷贝打印、透明打印、控制打印、格式打印等打印形式一般用在业务处理上的主要用透明打印和控制打印这里主要介绍透明打印和控制打印。
、透明打印的实现在透明打印方式下终端从服务器收到的字符除和外均不处理全部送到打印机去这种方式一般适用于带有汉字字库的打印机。
应用程序发出ESCAs1??把打印机作为文件打开IfDaBuLen0Then??断判是否有打印数据Put1StrConv??把数据送到打印机EndIfClose1......EndSub、控制打印的实现控制打印的实现比透明打印相对而言要复杂些在控制打印方式下打印的汉字字形、行距、字距控制等均使用终端命令实现对打印机的要求是能支持图形打印。
当终端收到ESCfasByteDimCombufPtrAsLong......Fori0ToDaBuLen-1SelectCaseDayinBuf......IfCombufPtr0Then??判定是否有打印内容Printer.PrintStrConv??把待打印内容送到Printer打印对象CombufPtr0??指针复位......SelectCaseCombufCaseAsc??打印属性指令ESCinter.PrintStrConv??把待打印内容送到Printer打印对象......Printer.EndDocEndIfEndSub另外在透明打印的实现上可以采用控制打印的实现方法这里涉及到对打印机指令进行解释的
问题。
在与本地服务器的连接上可以象终端一样把连接到终端的线缆直接连接到PC机的RS232口上然后在TELVT100程序中加入MSCOMM控件设置适当的通讯参数用该控件的Input、Output方法进行数据收发可以完全模拟终端使用。
经过以上各个过程我们的TELVT100就近在眼前了。
由于篇幅所限不能面面具到只给大家提供一个主体框架想起到抛砖引玉的效果希望和感爱好的各位一起分享成功带来的欢乐。
本程序已经被试用了一段时间反映情况良好。
结束语现在国内正流行数据的整合、集中行业用户的业务处理
系统在上一级部门的服务器上运行基层单位往往采用终端服务器通过数据专线远程连接到上级部门。
使用TELVT100这样的程序可以不用终端服务器而直接用PC机远程登录到业务处理系统服务器进行业务处理。
.a1