Опыт применения REXX FTP API - Функции
| Индекс материала | 
|---|
| Опыт применения REXX FTP API | 
| Введение | 
| Установка | 
| Коды возврата | 
| Функции | 
| Замечания по применению | 
| Послесловие | 
Страница 9 из 11
5.20. FtpSetBinary().
Задаёт режим передачи файлов, который будет использоваться функциями REXX FTP API по умолчанию.- Синтаксис:
 -  
rc = FtpSetBinary( pMode )
 - Параметры:
 -  
- pMode
 - режим передачи файлов:               
'Ascii' текстовый 'Binary' двоичный  
 - Возвращаемое значение:
 -  
Функции FtpSetActiveMode(), FtpSetBinary() и FtpSetUser() возвращают одно из следующих значений:
Значение Описание 1 нормальное завершение, ошибок нет 0 ошибка, требуемое действие не выполнено 
Cпециальной переменной FTPERRNO всегда присваивается значение 0.
 - Описание:
 -  
Если сессия FTP открыта, то функция FtpSetBinary() задаёт режим передачи файлов, который будет использоваться соответствующими функциями REXX FTP API по умолчанию.
В дальнейшем, если при вызове функций:
FtpAppend() 
FtpGet()FtpPut() 
FtpPutUnique()
будет опущен параметр, явно определяющий режим передачи файлов, то эти функции будут использовать режим, установленный функцией FtpSetBinary() (по умолчанию, двоичный).
 - Пример:
 -  
Ниже приведён текст программы, которая в качестве параметров получает имя локального файла, имя или адрес хоста и имя файла на сервере. А затем копирует файл c сервера в разных режимах передачи. Примеры результатов выполнения:/* rxFtpSetBinary.cmd - function example */
parse arg toFile pHost '/' fromFile
fromFile = '/'||Strip( fromFile );
if pHost = '' | toFile = '/' then do
say ''
say 'Usage: rxFtpSetBinary localfile host/remotefile'
say ''
exit 1
end
if RxFuncQuery( 'FtpLoadFuncs' ) then do
rc = RxFuncAdd( 'FtpLoadFuncs', 'rxFtp', 'FtpLoadFuncs' )
rc = FtpLoadFuncs( )
end
rc = FtpSetUser( pHost, 'anonymous', 'anonymous@guest.ftp' )
if rc \= 1 then do
say 'FtpSetUser() - Not connected'
exit 1
end
rc = FtpSetBinary( 'Binary' );
if rc = 1 then do
say ''
say 'Transfer mode is "Binary"'
end
else do
say ''
say 'FtpSetBinary("Binary") error RC='||rc
signal halt
end
rc = FtpGet( toFile||'.b', fromFile )
if rc = -1 then do
say ''
say 'FtpGet() FTPERRNO='||FTPERRNO
signal halt
end
else do
say ''
say 'File '||fromFile||' received to '||toFile||'.b OK'
end
rc = FtpSetBinary( 'Ascii' );
if rc = 1 then do
say ''
say 'Transfer mode is "Ascii"'
end
else do
say ''
say 'FtpSetBinary("Ascii") error RC='||rc
signal halt
end
rc = FtpGet( toFile||'.a', fromFile )
if rc = -1 then do
say ''
say 'FtpGet() FTPERRNO='||FTPERRNO
signal halt
end
else do
say ''
say 'File '||fromFile||' received to '||toFile||'.a OK'
end
halt:
rc = FtpLogoff()
/* end of file rxFtpSetBinary.cmd */X:>rxFtpSetBinary xxx.txt 127.0.0.1/Data/Ftp/Test.txt
Transfer mode is "Binary"
File /Data/Ftp/Test.txt received to xxx.txt.b OK
Transfer mode is "Ascii"
File /Data/Ftp/Test.txt received to xxx.txt.a OK - Связанные функции:
 -  
FtpAppend(), FtpGet(), FtpLogoff(), FtpPut(), FtpPutUnique(), FtpSetUser()
 
5.21. FtpSetUser().
Открывает сессию FTP.- Синтаксис:
 -  
rc = FtpSetUser( pHost, pUser, pPass [, pAcct] )
 - Параметры:
 -  
- pHost
 - адрес или имя хоста (сервера FTP)
 - pUser
 - имя пользователя сервера FTP
 - pPass
 - пароль пользователя сервера FTP
 - pAcct
 - (необязательный) аккаунт пользователя сервера FTP; информация об аккаунте пользователя, зависящая от конкретного хоста
 
 - Возвращаемое значение:
 -  
Функции FtpSetActiveMode(), FtpSetBinary() и FtpSetUser() возвращают одно из следующих значений:
Значение Описание 1 нормальное завершение, ошибок нет 0 ошибка, требуемое действие не выполнено 
Cпециальной переменной FTPERRNO всегда присваивается значение 0.
 - Описание:
 -  
Функция FtpSetUser() открывает сессию FTP, задавая имя или адрес хоста, имя пользователя, пароль и аккаунт.
Никакого обмена по сети по время выполнения этой функции не происходит. Параметры, переданные функции, используются в дальнейшем для инициализации и восстановления соединения с сервером FTP.
Фактически соединение с сервером FTP будет выполнено при первом же вызове любой функции из перечисленных ниже:
FtpAppend() 
FtpChDir()
FtpDelete()
FtpDir()
FtpGet()
FtpLs()FtpMkDir() 
FtpPut()
FtpPutUnique()
FtpPwd()
FtpQuote()
FtpRename()FtpRmDir() 
FtpSetActiveMode()
FtpSite()
FtpSys()
Именно тогда, перед выполнением вызванной функции, сначала будет послан запрос на получение адреса хоста серверу DNS. Если сервер DNS в системе не определён, то для поиска адреса хоста используется файл TCPIP\ETC\HOSTS.
Затем будет установлено соединение с сервером FTP и выполнена следующая последовательность команд: и только потом будут выполнены действия вызванной функции.USER <содержимое параметра pUser>
PASS <содержимое параметра pPass>
ACCT <содержимое параметра pAcct>
PWD
Все установки, выполненнные функцией FtpSetUser(), сбрасывает функция FtpLogoff(), закрывая сессию FTP.
 - Пример:
 -  
Ниже приведён текст программы, которая в качестве параметров получает имя или адрес хоста. Затем отправляет на сервер неполную команду, после чего сервер по тайм-ауту разрывает соединение. Соединение автоматически восстанавливается во время следующей попытки доступа к серверу. Затем сессия закрывается и работа становится невозможна. Примеры результатов выполнения:/* rxFtpLogoff.cmd - function example */
parse arg pHost
if pHost = '' then do
say ''
say 'Usage: rxFtpLogoff host'
say ''
exit 1
end
if RxFuncQuery( 'FtpLoadFuncs' ) then do
rc = RxFuncAdd( 'FtpLoadFuncs', 'rxFtp', 'FtpLoadFuncs' )
rc = FtpLoadFuncs( )
end
rc = FtpSetUser( pHost, 'anonymous', 'anonymous@guest.ftp' )
if rc \= 1 then do
say 'FtpSetUser() - Not connected'
exit 1
end
rc = FtpQuote( 'TYPE', xAnswer )
if rc = -1 then do
say ''
say 'FtpQuote() FTPERRNO='||FTPERRNO
end
else do
say ''
say xAnswer
end
rc = FtpSys( pSys )
if rc = -1 then do
say ''
say 'FtpSys() FTPERRNO='||FTPERRNO
end
else do
say ''
say pSys
end
rc = FtpLogoff()
if rc = -1 then do
say ''
say 'FtpLogoff() FTPERRNO='||FTPERRNO
end
rc = FtpSys( pSys )
if rc = -1 then do
say ''
say 'FtpSys() FTPERRNO='||FTPERRNO
end
else do
say ''
say pSys
end
/* end of file rxFtpLogoff.cmd */X:>rxFtpLogoff 127.0.0.1
FtpQuote() FTPERRNO=FTPCOMMAND
OS/2 operating system
FtpSys() FTPERRNO=FTPCOMMAND - Связанные функции:
 -  
FtpAppend(), FtpChDir(), FtpDelete(), FtpDir(), FtpGet(), FtpLogoff(), FtpLs(), FtpMkDir(), FtpPut(), FtpPutUnique(), FtpPwd(), FtpQuote(), FtpRename(), FtpRmDir(), FtpSetActiveMode(), FtpSetBinary(), FtpSite(), FtpSys()
 
5.22. FtpSite().
Передаёт информационную строку серверу FTP.- Синтаксис:
 -  
rc = FtpSite( pInfo )
 - Параметры:
 -  
- pInfo
 - информационная строка для сервера FTP.
 
 - Возвращаемое значение:
 -  
Функция возвращает одно из следующих значений:
Значение Описание 0 нормальное завершение, ошибок нет; 
специальной переменной FTPERRNO присвоено значение 0-1 ошибка во время выполнения; 
код ошибки помещён в специальную переменную FTPERRNO
Специальной переменной FTPERRNO присваивается одно из следующих значений:
Значение Описание 0 нормальное завершение, ошибок нет FTPSERVICE неизвестный сервис FTPHOST неизвестный хост FTPSOCKET невозможно получить сокет FTPCONNECT невозможно соединиться с сервером FTPLOGIN регистрация не выполнена FTPABORT передача данных прервана FTPLOCALFILE проблемы с открытием локального файла FTPDATACONN проблемы с инициализацией соединения FTPCOMMAND выполнение команды прервано, соединение с сервером может быть разорвано FTPPROXYTHIRD прокси-сервер не поддерживает передачу третьей стороне FTPNOPRIMARY нет первичного соединения для передачи по доверенности (proxy transfer) FTPFAILURE команда не выполнена, соединение с сервером сохранено 
 - Описание:
 -  
Если сессия FTP открыта, то сначала функция FtpSite() проверяет наличие соединения с сервером FTP и устанавливает его, если оно ещё не было установлено, или восстанавливает его, если оно было разорвано.
Имя или адрес сервера, имя пользователя и пароль задаются при открытии сессии FTP функцией FtpSetUser().
Затем отправляет на сервер следующую последовательность команд: Сервер должен поддерживать обработку переданной информационной строки.SITE <содержимое параметра pInfo>
 - Пример:
 -  
Ниже приведён текст программы, которая в качестве параметров получает имя или адрес хоста и информационную строку. А затем отображает результат передачи. Примеры результатов выполнения:/* rxFtpSite.cmd - function example */
parse arg pHost pInfo
if pHost = '' then do
say ''
say 'Usage: rxFtpSite host info'
say ''
exit 1
end
if RxFuncQuery( 'FtpLoadFuncs' ) then do
rc = RxFuncAdd( 'FtpLoadFuncs', 'rxFtp', 'FtpLoadFuncs' )
rc = FtpLoadFuncs( )
end
rc = FtpSetUser( pHost, 'anonymous', 'anonymous@guest.ftp' )
if rc \= 1 then do
say 'FtpSetUser() - Not connected'
exit 1
end
rc = FtpSite( pInfo )
if rc = -1 then do
say ''
say 'FtpSite() FTPERRNO='||FTPERRNO
end
else do
say ''
say 'Information transfered OK'
end
rc = FtpLogoff()
/* end of file rxFtpSite.cmd */X:>rxFtpSite 127.0.0.1 xxx
Information transfered OK
X:>rxFtpSite ftp.software.ibm.com xxx
FtpSite() FTPERRNO=FTPCOMMAND - Связанные функции:
 -  
FtpLogoff(), FtpQuote(), FtpSys(), FtpSetUser()
 
5.23. FtpSys().
Получает информацию об операционной системе сервера FTP.- Синтаксис:
 -  
rc = FtpSys( pAnswer )
 - Параметры:
 -  
- pAnswer
 - переменная, в которую будет помещена строка с информацией об операционной системе сервера.
 
 - Возвращаемое значение:
 -  
Функция FtpSys возвращает одно из следующих значений:
Значение Описание <строка> нормальное завершение, ошибок нет; 
строка содержит описание операционной системы сервера FTP;
специальной переменной FTPERRNO присвоено значение 0-1 ошибка во время выполнения; 
код ошибки помещён в специальную переменную FTPERRNO
Специальной переменной FTPERRNO присваивается одно из следующих значений:
Значение Описание 0 нормальное завершение, ошибок нет FTPSERVICE неизвестный сервис FTPHOST неизвестный хост FTPSOCKET невозможно получить сокет FTPCONNECT невозможно соединиться с сервером FTPLOGIN регистрация не выполнена FTPABORT передача данных прервана FTPLOCALFILE проблемы с открытием локального файла FTPDATACONN проблемы с инициализацией соединения FTPCOMMAND выполнение команды прервано, соединение с сервером может быть разорвано FTPPROXYTHIRD прокси-сервер не поддерживает передачу третьей стороне FTPNOPRIMARY нет первичного соединения для передачи по доверенности (proxy transfer) FTPFAILURE команда не выполнена, соединение с сервером сохранено 
 - Описание:
 -  
Если сессия FTP открыта, то сначала функция FtpSys() проверяет наличие соединения с сервером FTP и устанавливает его, если оно ещё не было установлено, или восстанавливает его, если оно было разорвано.
Имя или адрес сервера, имя пользователя и пароль задаются при открытии сессии FTP функцией FtpSetUser().
Затем отправляет на сервер следующую последовательность команд: Если выполнение прошло успешно, то помещает информацию об операционной системе сервера в переменную, указанную в качестве параметра pAnswer, если она не инициализирована.SYST
Если переменная инициализирована, то её значение не изменится. Во избежание ошибок рекомендуется сбросить её с помощью команды DROP непосредственно перед вызовом функции.
 - Пример:
 -  
Ниже приведён текст программы, которая в качестве параметров получает имя или адрес хоста. А затем отображает описание операционной системы, под которой работает сервер на этом хосте. Примеры результатов выполнения:/* rxFtpSys.cmd - function example */
parse arg pHost .
if pHost = '' then do
say ''
say 'Usage: rxFtpSys host'
say ''
exit 1
end
if RxFuncQuery( 'FtpLoadFuncs' ) then do
rc = RxFuncAdd( 'FtpLoadFuncs', 'rxFtp', 'FtpLoadFuncs' )
rc = FtpLoadFuncs( )
end
rc = FtpSetUser( pHost, 'anonymous', 'anonymous@guest.ftp' )
if rc \= 1 then do
say 'FtpSetUser() - Not connected'
exit 1
end
rc = FtpSys( xSys )
if rc = -1 then do
say ''
say 'FtpSys() FTPERRNO='||FTPERRNO
end
else do
say ''
say rc
end
rc = FtpLogoff()
/* end of file rxFtpSys.cmd */X:>rxFtpSys 127.0.0.1
OS/2 operating system
X:>rxFtpSys ftp.software.ibm.com
UNIX Type: L8 - Связанные функции:
 -  
FtpLogoff(), FtpQuote(), FtpSite(), FtpSetUser()
 
5.24. FtpVersion().
Получает версию билиотеки REXX FTP API.- Синтаксис:
 -  
rc = FtpVersion( pAnswer )
 - Параметры:
 -  
- pAnswer
 - переменная, в которую будет помещён номер версии библиотеки REXX FTP API.
 
 - Возвращаемое значение:
 -  
Функция FtpVersion() всегда возвращает пустую строку ("").
Cпециальной переменной FTPERRNO всегда присваивается значение 0.
 - Описание:
 -  
Вполне самостоятельная функция, никак не связанная с остальными функциями REXX FTP API (за исключением FtpLoadFuncs() и FtpDropFuncs()).
Всегда возвращает пустую строку в качестве кода возврата и помещает номер версии REXX FTP API в переменную, указанную в качестве параметра pAnswer, если она не инициализирована.
Если переменная инициализирована, то её значение не изменится. Во избежание ошибок рекомендуется сбросить её с помощью команды DROP непосредственно перед вызовом функции.
 - Пример:
 -  
Ниже приведён текст программы, которая демонстрирует номер версии библиотеки REXX FTP API. Примеры результатов выполнения:/* rxFtpVersion.cmd - function example */
if RxFuncQuery( 'FtpLoadFuncs' ) then do
rc = RxFuncAdd( 'FtpLoadFuncs', 'rxFtp', 'FtpLoadFuncs' )
rc = FtpLoadFuncs( )
end
rc = FtpVersion( pVer )
say ''
say 'REXX FTP API Version '||pVer
/* end of file rxFtpVersion.cmd */X:>rxFtpVersion
REXX FTP API Version 2.1 - Связанные функции:
 -  
Связанных функций нет. 
