1. OS/400 Host 简介
在介绍OS/400 上的Host Server 之前,首先要了解Client/Server 结构,顾名思义,Client/Server结构由两个部分组成,一个是客户端,另一个是服务器端,客户端向服务器端发出请求,如查询、打印文件等;服务器端负责响应客户端的请求,服务器含有很多客户端想要得到的资源;简单地说Client/Server 是客户端对服务器发出请求,服务器对客户端的请求提供响应。
服务器可以是一台PC ,也可以是一台中型或大型的主机,iSeries 同样可以担当服务器,它集成了很多服务器的功能,它可以作为文件、应用程序、数据库、多媒体、邮件,打印、传真等服务器,使得这些服务器的运行、维护、协同工作变得非常方便,而且降低了成本。
2. OS/400 host server
为了实现Client/Server 的功能,OS/400 引入了Host server 的概念,Host Server 实际上是OS/400 上的一组程序,这组程序负责处理从客户端向OS/400 发来的请求,如:运行应用程序、查询数据库、打印文件、甚至进行和恢复,iSeries 计算机是一种多用途、多功能的服务器,它能够同时处理多种客户请求,如对文件、数据库、应用程序、多媒体、邮件、打印、传真、无线通讯的请求,可想而知,如果这些服务分布在网络中的不同服务器上,和维护会变得非常复杂,iSeries 将这些服务集于一身,大大降低了总成本和网络管理的复杂度。
2.1. OS/400 Host Server 的
2.1.1.何确认OS/400 Host Server 是否已被安装?
OS/400 Host Server 所对应的特许程序是5722SS1 OPTION 12 (V5Rx) 或5769SS1 OPTION12 (V4Rx)。
若不知OS/400 中是否已安装了Host Server ,可以在OS/400 命令行上输入以下命令查看。
a)GO LICPGM
b)输入10 ,“Display installed licensed programs ”,查看已安装的特许程序。
c)在“Display Installed Licensed Programs ”画面,按两下F11 功能键,显示“Product Option ”的内容,如图表1 所示:
2pC*I)` tZe-U\*Vk C!N0图表 1 显示特许程序
在按两下F11 功能键,返回。 若Host Server 已被成功安装,则“Installed Status ”的状态为“*COMPATIBLE ”。
2.1.2.安装OS/400 Host Server
若OS/400 中未安装Host Server, 请按照以下步骤安装。
图表2 显示不同版本Host Server 在哪张安装光盘中。
Host Server 与安装光盘 |
版本 |
Host Server |
所在光盘(盘号) |
V4Rx |
5769SS1 OPTION 12 |
B2984_02 |
V5Rx |
5722SS1 OPTION 12 |
B2984_04 | |
图表 2 Host Server 与安装光盘
安装步骤:
1 )主控台以QSECOFR 用户登陆。
2 )参照图表2 所示内容,将所需的安装光盘插入光驱中。
3 )在主控台上命令行,输入以下命令:
a) CHGMSGQ QSYSOPR *BREAK SEV(60)
b) ENDSBS *ALL *IMMED
c) CHGMSGQ QSYSOPR SEV(95)
4 )在命令行上输入命令
a) GO LICPGM
b) 选择11 ,“Install licensed programs ”安装Host Server 。
c) 在图表3 “Install licensed programs ”画面中“5722SS1 OPTIONG 12 ”所在的位置输入1 。
ITPUB个人空间x~;cJ { dy
图表 3 安装特许程序
d) 按两下回车键,弹出画面“Install Options ”,请按照图表4 所示的内容输入
ITPUB个人空间lzK6Nuy t
图表 4 安装选项
e)按回车键进行安装。
若已安装完成,请按照2.1.1 所列出的方法进行确认。
2.2. OS/400 Host Server 原理
2.2.1.什么是SOCKETS
因为OS/400 Host server 是通过sockets (套接字)与客户端进行通讯,所以简单介绍一下Sockets 。
套接字是通信的基石,是支持TCP/IP 协议的网络通信的基本操作单元。可以将套接字看作不同主机间的进程进行双向通信的端点,它构成了单个主机内及整个网络间的编程界面。套接字存在于通信域中,通信域是为了处理一般的线程通过套接字通信而引进的一种抽象概念。套接字通常和同一个域中的套接字交换数据(数据交换也可能穿越域的界限,但这时一定要执行某种解释程序)。
2.2.2. SOCKETS 工作原理
要通过互联网进行通信,你至少需要一对套接字,其中一个运行于客户机端,我们称之为ClientSocket ,另一个运行于服务器端,我们称之为ServerSocket 。
根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认。
所谓服务器监听,是服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。
所谓客户端请求,是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。所谓连接确认,是指当服务器端套接字监听到或者说接收到客户端套接字的连接请求,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,连接就建立好了。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。
2.2.3. Host Server 如何用SOCKETS 与客户端进行通讯
ITPUB个人空间6FABPe1C%|\
图表 5 OS/400 Host Server 原理图
图表5 描述了OS/400 Host Server 用SOCKETS 与客户端建立通讯连接的过程。
① 客户端的应用程序用特殊的端口号(Port number)与OS/400 端的服务器程序建立通讯连接。
②OS/400 中的后台程序必须用命令STRHOSTSVR 预先启动,监听、接受客户端的请求。在服务器端接受客户端的连接请求之后,OS/400 上的Daemon 作业发出一个内部请求,将客户请去与具体的服务器作业(Server Job)建立连接关系,这个服务器作业可以是预启动作业(Prestarted Job),也可以是批作业(Batch Job)。服务器作业(Server Job)用来处理客户端的请求。
③客户端将用户名、口令发送给服务器作业(Server Job),服务器作业对其进行身份验证。
④用户的身份被验证成功后,服务器作业(Server Job)将处理这个用户的请求,按照用户的本身定义的特性修改复武器作业的属性。
2.2.4.OS/400 Host server 提供哪些服务和所对应的程序
上一节讲述了Host Server 如何用SOCKETS 与客户端进行通讯,OS/400 Host Server 提供了很多服务,这些服务用来响应客户端的请求,下面简单介绍Host Server 的主要服务:
1 )Central server
·Central server 主要完成两项任务:
a) 许可管理(License management ),处理 Transfer 或PC5250 发出的请求,为ClientAccess Express 用户保存一个许可。
b) 获得相应的转换表。
·与Central server 相关的OS/400 程序名:
Central server 对应的程序名 |
程序名 |
库名 |
描述 |
QZSCSRVS |
QSYS |
Server program |
QZSCSRVSD |
QSYS |
Daemon program | |
图表 6 Central server 对应的程序名
2 )Database server
·Database server 用于实现客户端对DB2/400 数据库的访问,它提供以下功能:
a) 支持远程 访问;
b) 通过ODBC 接口访问数据;
c) 数据库功能(例如:创建、删除、增加和删除数据库文件的成员)
d) 提供用于获得OS/400 中数据库文件信息的函数
·与Database server 相关的OS/400 程序名:
Database server 对应的程序名 |
程序名 |
库名 |
描述 |
QZDASOINIT |
QSYS |
Server program |
QZDASON2 |
QSYS |
Sockets setup program |
QZDASRVSD |
QSYS |
Daemon program |
QZDASSINIT |
QSYS |
SSL server program | |
图表 7 Database server 对应的程序名
3 )Data queue server
·Data queue server 用于实现PC 应用程序与OS/400 上Data queue 之间的数据通讯。
·与Data queue server 相关的OS/400 程序名:
Data queue server 对应的程序名 |
程序名 |
库名 |
描述 |
QZHQSSRV |
QSYS |
Server program |
QZHQSRVD |
QSYS |
Daemon program | |
图表 8 Data queue server 对应的程序名
4 )File server
·File server 用于实现客户端访问OS/400 中的集成文件系统(IFS ),集成文件系统支持对流文件的访问,它的存储管理与PC 机和UNIX 操作系统相似。
·与File server 相关的OS/400 程序名:
File server 对应的程序名 |
程序名 |
库名 |
描述 |
QPWFSERVSO |
QSYS |
*PGM Server program |
QPWFSERVS2 |
QSYS |
*PGM Server program |
QPWFSERVSD |
QSYS |
*PGM Daemon program |
QPWFSERV |
QSYS |
*JOBD Job description used for server jobs |
QPWFSERVER |
QSYS |
*CLS Class used for all file server and database server jobs |
QPWFSERVSS |
QSYS |
*PGM SSL server program | |
图表 9 File server 对应的程序名
5 )Network print server
·Network print server 能够让客户端的用户使用OS/400上的打印资源进行打印。
·与Network print server 相关的OS/400程序名:
Network print server 对应的程序名 |
程序名 |
库名 |
描述 |
QNPSERVS |
QSYS |
Server program |
QNPSERVD |
QSYS |
Daemon program | |
图表 10 Network print server 对应的程序名
6 )Remote command/program call server
·Remote command/program call server 能够让客户端的用户或应用程序执行OS/400 上的CL 命令或调用OS/400 上的程序。
·与Remote command/program call server 相关的OS/400 程序名:
Remote command/program call server 对应的程序名 |
程序名 |
库名 |
描述 |
QZRCSRVS |
QSYS |
Server program |
QZRCSRVSD |
QSYS |
Daemon program | |
图表 11 Remote command/program call server 对应的程序名
7 )Signon server
·Signon server 对客户端的用户的身份进行安全检查(包括用户名、口令等)。
·与Signon server 相关的OS/400 程序名:
Signon server 对应的程序名 |
程序名 |
库名 |
描述 |
QZSOSIGN |
QSYS |
Server program |
QZSOSGND |
QSYS |
Daemon program | |
图表 12 Signon server 对应的程序名
8 )Server mapper
·Server mapper 用于响应客户端的应用对服务器服务所使用的端口查询。
·与Server mapper 相关的OS/400 程序名:
Server mapper 对应的程序名 |
Program name |
Library |
Description |
QZSOSMAPD |
QSYS |
Server port mapper program | |
图表 13 Server mapper 对应的程序名
2.2.5.服务表(SERVICE TABLE )
Host Server 中的每中服务都有其自己的Daemon 作业,Daemon 作业监听响应的端口,下图表14 列出了服务与端口的对应关系。
Service table |
服务名 |
描述 |
端口号 |
AS-CENTRAL |
Central server |
8470 |
AS-DATABASE |
Database server |
8471 |
AS-DTAQ |
Data queue server |
8472 |
AS-FILE |
File server |
8473 |
AS-NETPRT |
Network print server |
8474 |
AS-RMTCMD |
Remote command/program call |
8475 |
AS-SIGNON |
Signon server |
8476 |
AS-SVRMAP |
Server mapper |
449 | |
图表 14 Service table
若适用SSL(安全套接字),则采用其它端口号,如图表15 所示。
Service table (SSL) |
服务名 |
描述 |
端口号 |
As-central-s |
Secure Central server |
9470 |
As-database-s |
Secure Database server |
9471 |
as-dtaq-s |
Secure Data queue server |
9472 |
as-file-s |
Secure File server |
9473 |
as-netprt-s |
Secure Network print server |
9474 |
As-rmtcmd-s |
Secure Remote command/program call server |
9475 |
As-signon-s |
Secure Signon server |
9476 | |
图表 15 Service table (SSL)
2.2.6.显示和修改服务表
从OS/400 命令WRKSRVTBLE 查看服务名和它对应的端口号,如图表16 所示:
m ei-Kp0图表 16 WRKSRVTBLE
可以用命令ADDSRVTBLE 和RMVSRVTBLE 修改服表。
启动和停止Host ServerITPUB个人空间,^AJ-N4]cK]?c ITPUB个人空间fax#NG3W Host Server 安装完成后,下一步的工作是启动它。 7J2_7M%L&B Ct02.3.1.启动Host Server #Izu@Yg q B0在OS/400 命令行上输入命令STRHOSTSVR 启动Host Server。ITPUB个人空间/_/J [AH.[$q6V5M 这条命令有两个参数Server type 和Required protocol,下面分别加以解释。ITPUB个人空间'K h4[#nZ E(p 参数解释:ITPUB个人空间7uQ*{ j G Server type:启动哪一种服务器Daemon(后台程序)。
- ALL 启动所有的Server Daemon 和Server mapper daemon.。
- CENTRAL 启动QSYSWRK 子系统中的Central server daemon,它所对应的Daemon作业名是QZSCSRVSD。与之相关的作业还有 QZSCSRVS 。
- DATABASE 启动QSERVER 子系统中的Database server daemon。它所对应的Daemon 作业名是QZDASRVSD。与之相关的作业还有QZDASOINIT和QTFPJTCP。
- DTAQ 启动QSYSWRK 子系统中的Data queue server daemon,它所对应的Daemon作业名是QZHQSRVD。与之相关的作业还有QZHQSSRV 。
- FILE 启动QSERVER子系统中的File server daemon,它所对应的Daemon作业名12QPWFSERVSD。与之相关的作业还有QPWFSERVSO 和QPWFSERVS2 。
- NETPRT 启动QSYSWRK 子系统中的Network print server daemon,它所对应的Daemon作业名是QNPSERVD。与之相关的作业还有QNPSERVS 和QIWVPPJT。
- RMTCMD 启动QSYSWRK 子系统中的Remote command 和Distributed program call server daemon,它所对应的Daemon 作业名是QZRCSRVSD。与之相关的作业还有QZRCSRVS。
- SIGNON 启动QSYSWRK子系统中的Signon server daemo,它所对应的Daemon作业名是QZSOSGND。与之相关的作业还有QZSOSIGN。
- SVRMAP 启动QSYSWRK 子系统中的Server mapper daemon,它所对应的Daemon作业名是QZSOSMAPD 。ITPUB个人空间`-ENf?K({
Required protocol 采用哪一种协议
- ANY: 在启动Host Server 时,TCP/IP 协议必须处于活动状态。
- NONE 在启动Host Server 时,通讯协议不必处于活动状态。
- TCP 在执行STRHOSTSVR 命令时,TCP/IP 协议必须处于活动状态。
Q j&c!yeA0用户可以根据自己的要求,选择不同的参数。ITPUB个人空间Rn!doT%]R GR9P 举例说明: \tt|ar5ey01) STRHOSTSVR SERVER(*ALL) RQDPCL(*TCP)ITPUB个人空间jOn7T@ 它的含义是启动所有的Server Daemon 和Server mapper daemon 。ITPUB个人空间;m#O%cs9rb 2) STRHOSTSVR SERVER(*CENTRAL *SVRMAP)ITPUB个人空间~dJdZ Ku;W8aY 这条命令的含义是:同时启动Central server daemon 和Server mapper daemon 。
2.3.2.验证Host Server 是否已启动。 DhZgG#S xzx0ITPUB个人空间:~`G;z [ Vo 方法1.ITPUB个人空间d9m |P3W0c 查看OS/400 Host Server 所对应的端口是否处于监听状态。ITPUB个人空间v l1l8l R0^ 方法如下:ITPUB个人空间R^?9A#_Q,DB u"C8s 1 )在OS/400 命令行输入命令: ic5H2^J2i0NETSTAT *CNN 3?Gt ~G3W0G:N2B"iWp02) 查看Host Server 中的Daemon 作业所对应的端口是否处于监听状态,如图表17 所示:
5Ff)x1b O;O0图表 17 NETSTAT *CNN VkT2B0X0Daemon 作业所对应的端口号请参照2.2 节。ITPUB个人空间5@f4KH0M 方法2. (kNNF%C M%bU3B0用Client Access Express 提供的CWBPING 命令查看Host Server 是否已正常启动。 ;x6J{k(C6J f0在DOS 窗口执行: mq_ ik|]0CWBPING AS/400 的IP 地址 cj/{{9[-y*nD0例如 p${Cv y1o y L0CWBPING 9.181.54.193 $~B lCVG0返回结果如图表18 所示:
ITPUB个人空间h#wk Y*bPH4W
|
|
方法3.
'{!vB-W1e/|vkj0用操作导航器(Operation Navigator )中验证连接功能进行ITPUB个人空间MOA4GP,d#K
a) 打开操作导航器ITPUB个人空间h'ZccJx,k
b) 在要测试的节点处,按鼠标右键,选中“Connection Server ”->“Verify Connection ”
1C7gX/}_0如图表19 所示。
之后弹出,验证连接画面。如图表20 所示。
2.3.3.停止Host ServerITPUB个人空间U/C]/D2\&WPj!rr-z/T
在OS/400 命令行上输入命令ENDHOSTSVR 停止Host Server ,这个命令也同样有两个参数,ITPUB个人空间 fv?0f.O
Server type 和Required protocol ,含义与2.3.1 节中的内容相同,不再赘述。
3s$] F v#Ud j0举例说明:
[ X*X8N$s01 )ENDHOSTSVR SERVER(*ALL)将服务器Daemon 和服务器mapper daemon 停掉。ITPUB个人空间/`|G%P }
2 )ENDHOSTSVR SERVER(*CENTRAL *SVRMAP)将Central server 和Server mapper daemon 停掉。
JH1os"Ut e0ITPUB个人空间T q2r&| J%^G/V]
3. 常见问题和解决办法
CR d;Y$| y4bA:A0
mt0A0D|q R_ y)w03.1. 为什么OS/400 Host Server 无法启动?ITPUB个人空间h\ c5C(OV
Client Access TCP/IP 服务和端口状态有时候会因为各种原因处于不一致状态,最常见的情况是:
j3l*mR"]9`0用户在没有断开与主机的通讯连接的情况下,断开PC 机或重新启动PC 机,这时Client Access TCP/IP 服务可能是活动的,但是与PC 机的通讯却已经不能进行了.
m\,A{n"g:D0如果用户在关机(PC)的同时,Client Access TCP/IP 服务正在处理某个用户请求,那么该TCP/IP服务会一直处于处理任务的状态。此时运行ENDHOSTSVR 命令去结束服务,然后用STRHOSTSVR 命令再开始服务时,
t3A$x_!Ov[0后台服务程序(server daemon)将提示TCP/IP 服务已经激活并且使用了响应的端口。如下所示:ITPUB个人空间 O\uLWnd#qc
...
5Br'q&DJo.M0Routing entry sequence number ???already exists.
a7u8~ ?B:jZ0Compare value conflicts with routing entry ???.
rpzgho0Host server daemon job already active.
%{v)ye"w!x0