AS/400上的FTP

2023-10-27

3.1.1.1 AS/400上的FTP

FTP是如何工作的

FTP是基于客户-服务器模型而设计的。客户和服务器之间利用TCP直接连接。与其它客户-服务器模型不同的是:FTP客户与服务器之间是要建立双重连接:一个是控制连接,一个是数据连接。建立双重连接的原因在于FTP是一个交互会话系统,某客户每次调用FTP,便与服务器建立一个会话,会话以控制连接来维持,直到退出FTP。控制连接负责传输控制信息,尤其是客户客户命令(比如文件传输命令等等)。利用控制命令,客户可以向服务器提出无数次的请求(一个客户命令就是一个请求)。客户每提出一个请求,服务器再与客户建立一个数据连接,进行实际的数据(比如文件)传输。一旦数据传输完成,数据连接会话就被撤销,但控制连接依然存在,客户可以继续发出命令。直到牢记键入CLOSE命令撤销控制连接,再键入QUIT退出FTP会话。此时双方控制进程就不再存在了。

FTP连接的建立

在一个FTP会话中,需要建立一个控制连接和若干个数据连接。

建立控制连接的过程大家都很熟悉。FTP服务器的公认端口是21。客户控制进程申请一个随机分配的本地端口后,用常规的方法可以与服务器端口21建立一个连接。

数据连接的建立就没有那么简单了。在建立数据连接的过程中,客户控制进程反客为主,成为连接的接收者,而服务器数据传输进程成了连接的请求者。作为一个新的子进程,服务器传输进程可以申请一个新的端口号来建立自己的相关连接(一般是利用FTP的保留端口号20),而它向哪个客户端口发送连接请求呢?要知道客户是没有公认端口的,这时就要利用到控制连接,客户控制进程通过控制连接告知服务器进程自己的数据连接端口号,服务器控制进程将它转告自己的数据传输进程,服务器数据传输进程便可以利用它与客户建立数据连接。

FTP命令集

!”或者“*SYSCMD:用户可以在FTP模式中执行本地AS/400的命令。在实际工作中,这一命令非常有用,你不用退出FTP模式就可以直接执行本地AS/400的命令。

DIR”:列出远程AS/400某个目录中的FILESMEMBERS。若你执行了“PUT”操作,用“DIR”命令查看是否将文件传到了远程AS/400中。

PWD”:列出远程系统的当前目录中的FILESMEMBERS

LPWD”:列出本地系统的当前工作目录中的FILESMEMBERS

PUT”:将文件从本地系统发送到远程系统。

MPUT”:将多个文件从本地系统发送到远程系统。

GET”:从远程系统传文件到本地系统。

MGET”:从远程系统传多个文件到本地系统。

ASCII”:改变到ASCII模式。

BINARY”:改变到BINARY模式。

EBCDIC”:改变到EBCDIC模式。

特别注意:将含有数值类型的文件从AS/400发送到ASCII系统时,应将文件中的数值字段改为ZONED类型,而不是PACKED类型,否则将发生不可预测的结果。

RENAME”:更改远程系统中的文件名。

QUOTE”:执行远程服务器端的命令而不用重新登录远程系统。

LCD”:改变本地系统的当前目录。

CD”:改变远程系统的当前目录。

CDUP”:进入远程系统的父目录。

LOCSTAT”:显示本地状态信息。

配置AS/400 FTP服务器

用户要配置AS/400 FTP服务器中,需要有*IOSYSCFG特权。

A、配置TCP/IP

B、修改FTP属性。 命令是CHGFTPA(对QUSRSYS/QATMFTP.CONFIG数据库文件进行修改)。

主要参数说明:

Autostart Servers : Autostart Servers*YES时,一旦TCP/IP启动,FTP服务器也将自动启动。

Number of Initial Servers: FTP服务器初始启动数量。根据FTP的流量而定,初始值为3一般就足够用了。

Inactivity Timeout: 指出FTP客户端与服务器端在多少秒没有交互后,连接将自动断开。缺省值为300秒(5分钟)。

Coded character set identifyier: 缺省值为00819,所有被传入的ASCII字符将被翻译成EBCDIC 500代码页。也可以制定你自己的转换表。

Initial name format: 缺省值为*LIBL,将所有FTP服务器的命名形式设为NAMEFMT0;若此值为*PATH,则NAMEFMT=1

Initial directory: 缺省值为*CURLIB,以登录FTP服务器的用户的当前目录为FTP会话的当前目录;若此值为*HOMEDIR时,FTP会话的目录以用户简要表的HOMEDIR参数为准。

New file CCSID: 指定用户FTP创建文件的CCSID值。

启动与停止FTP服务器

    手工启动FTP服务器,在AS/400命令行输入:

STRTCPSVR *FTP

手工停止所有FTP服务器,在AS/400命令行输入:

ENDTCPSVR *FTP

注意:

因为直接用ENDTCPSVR *FTP命令停止FTP服务器,用户可能会丢失数据,为了保证用户不丢失数据,应该按照以下步骤进行处理:

A、AS/400的命令行输入:

WRKACTJOB SBSD(QSYSWRK)

查找是否有QTFTPxxxxx(xxxxx代表5位数字)存在,若没有,则可以执行ENDTCPSVR *FTP命令;若有,则黑心做下一步。

B、确保没有用户登录FTP服务器。在AS/400的命令行输入:

NETSTAT *CNN

查找是否有LOCAL PORT FTP-CON状态为ESTABLISHED的连接存在,若没有则可以执行下一步;若有,应该等等用户的FTP结束后再执行下一步。

C、AS/400的命令行键入:

ENDTCPSVR *FTP

批方式FTP

    FTP被设计为交互式TCP/IP应用,但AS/400也支持FTP批处理方式。

    FTP批处理方式应该按照如下步骤来进行:

3.2.5 创建一个CL程序来启动FTP

3.2.5 创建一个含有所有交互方式FTP命令的源物理文件的成员。

3.2.5 提交批作业运行这个CL程序。

检查结果。[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/52450/viewspace-993889/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/52450/viewspace-993889/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AS/400上的FTP 的相关文章

随机推荐

  • QComboBox样式表 下拉框 QSS 样式表

    注意 QComboBox pComboBox new QComboBox this pComboBox gt setView new QListView 添加这句 设置下拉列表项高才能生效 未下拉时 QComboBox的样式 QComboB
  • Kubernetes下载kube-flannel失败解决方案 大数据

    Kubernetes下载kube flannel失败解决方案 大数据 Kubernetes是一个开源的容器编排平台 而kube flannel是Kubernetes集群中广泛使用的网络插件 用于提供容器之间的网络互通 然而 有时候在下载ku
  • Socket通讯工具类【SocketTools】(20140402修订版)

  • error pulling image configuration: Get https://production.cloudflare.docker.com/registry-v2/docker/

    error pulling image configuration Get https production cloudflare docker com registry v2 docker 原因 使用docker拉取镜像失败 解决方法 在
  • socket 网络通信 ( windows + Linux )

    参考 C socket 网络通信等 Socket 编程 socket起源于Unix 而Unix Linux基本哲学之一就是 一切皆文件 都可以用 打开open gt 读写write read gt 关闭close 模式来操作 Socket就
  • springboot 连接数据库失败取消自动重试,DruidDataSource取消自动重试

    默认是无限自动重试 导致程序卡死 那么如果我不想让它重试呢 方案1 application properties里面添加即可 spring datasource druid break after acquire failure true
  • java接口菱形继承

    其实菱形继承的副作用只是因为公共基类的成员变量 Java的接口可以做出类似菱形继承的结构 但因为公共基类 接口 中没有成员变量 所以没有二义性问题啦 当然也可以使用内部类 嵌套类 来实现类似多继承 不必担心会发生钻石危机 因为用内部类实现多
  • VScode自动生成项目结构树

    1 安装插件 project tree 2 使用 Shift Cmd p或者F1 输入 Project Tree 3 结果自动生成在README md文件中 exampleObject gitignore babel config js p
  • JavaWeb-16 JDBC编程进阶(自定义数据源+开源数据源:DBCP、C3P0)

    JavaWeb 16 JDBC编程进阶 自定义数据源 开源数据源 DBCP C3P0 一 调用存储过程 a 存储过程是什么 将一组SQL组合在一起 类似于java代码里面的函数 现实当中SQL命令不可能一条一条调用 目的为了打包存储调用 放
  • php 微信平台 无效的签名,微信公众平台, config:invalid signature一直爆这个错误,求教如何解决?...

    解决了 如果测试签名和自己生成的签名一致的话 那就是url的问题 可以通过js端生成url后用ajax或者get方式传到php端 具体为 function WeChat url title shareimg get U Api Test a
  • py将图片生成pdf

    usr local bin python3 coding utf 8 from PIL import Image import os def combine2Pdf folderPath pdfFilePath files os listd
  • 删除字符串中指定字符

    include
  • DP转HDMI后显示器无信号

    板DP接口是老式接口需要主动式DP转HDMI的转换器或者线 主板DP接口是老式接口需要主动式DP转HDMI的转换器或者线才行 新的DP 接口就没有这个问题 主动式DP转HDMI线就OK了
  • MabtisPlus书写模糊查询(Mysql)

    CONCAT关键字 拼接字符串 例 Select SELECT FROM classify WHERE itemName like CONCAT itemName public List
  • 统计难题

    链接 http acm hdu edu cn showproblem php pid 1251 Problem Description Ignatius最近遇到一个难题 老师交给他很多单词 只有小写字母组成 不会有重复的单词出现 现在老师要
  • 网络编程架构简介

    软件开发架构 什么是软件开发架构 实际编写项目时 不会把所有代码都写在同一个项目文件中 在编写项目前 一般要先按照不同的功能分开写代码 像这样按照不同功能将代码写在不同的区域就是软件开发架构 软件开发架构分类 1 c s架构 c clien
  • 新人毕业,老人跳槽:5位同学简历中的问题

    新人毕业 老人跳槽 2位同学简历中的15个问题 又是凤凰花开 新人毕业 老人跳槽的季节了 最近 有2位同学有跳槽的意向 趁着晚上和周末 写写简历 这2位同学 很看得起我 让我帮忙看看简历 我反复看了简历 发现了不少问题 下面主要列出一些 排
  • AIGC数据库工具-阿里开源Chat2DB

    前言 今天无意间发现了一个AIGC数据库工具 chat2DB 重点 阿里开源 其设计产品的思想给了我很多灵感 故记录一下 并分享给大家 概述 Chat2DB 是一款有开源免费的多数据库客户端工具 支持windows mac本地安装 也支持服
  • Linux设置开机启动和定时任务crontab

    一般来说Ubunt会默认安装crontab工具 特别注意 环境变量crontab读取不到的 一定在里面不要有环境变量 入口 入口2 入口3 如果你需要输入密码可以在脚本中这样写 bin bash echo home pwd pwd sudo
  • AS/400上的FTP

    3 1 1 1 AS 400上的FTP FTP是如何工作的 FTP是基于客户 服务器模型而设计的 客户和服务器之间利用TCP直接连接 与其它客户 服务器模型不同的是 FTP客户与服务器之间是要建立双重连接 一个是控制连接 一个是数据连接 建