FTPIO(3)

명칭
ftpLogin, ftpChdir, ftpErrno, ftpGetModtime, ftpGetSize, ftpGet, ftpPut, ftpBinary, ftpPassive, ftpVerbose, ftpGetURL, ftpPutURL, ftpLoginAf, ftpGetURLAf, ftpPutURLAf - FTPIO 유저 프로그램 라이브러리

서식
<ftpio.h> FILE * ftpLogin(char *host, char *user, char *passwd, int ftp_port, int verbose, int *retcode) int ftpChdir(FILE *stream, char *dirname) int ftpErrno(FILE *stream) const char * ftpErrString(int errno) time_t ftpGetModtime(FILE *stream, char *file) off_t ftpGetSize(FILE *stream, char *file) FILE * ftpGet(FILE *stream, char *file, off_t *seekto) FILE * ftpPut(FILE *stream, char *file) int ftpAscii(FILE *stream) int ftpBinary(FILE *stream) int ftpPassive(FILE *stream, int status) void ftpVerbose(FILE *stream, int status) FILE * ftpGetURL(char *url, char *user, char *passwd, int *retcode) FILE * ftpPutURL(char *url, char *user, char *passwd, int *retcode) FILE * ftpLoginAf(char *host, int af, char *user, char *passwd, int ftp_port, int verbose, int *retcode) FILE * ftpGetURLAf(char *url, int af, char *user, char *passwd, int *retcode) FILE * ftpPutURLAf(char *url, int af, char *user, char *passwd, int *retcode)

해설
이 함수는, FTP connection를 관리하기 위한 고레벨인 프로그램 라이브러리를 실장합니다.

ftpLogin() (은)는, 지정되었다 user, passwd, ftp_port (0 을 건네주었을 경우, 표준 FTP 포트의 21 이 디폴트로 ftp_port (이)가 된다), verbose 필드를 사용해 로그인하려고 합니다. 로그인에 성공하면, 표준적인 스트림 기술자가 돌려주어집니다. 이 기술자는, 후의 FTP 오퍼레이션에 건네주세요. 에러가 발생했을 경우는 NULL 가 돌려주어 retcode 에는, 외부 서버가 돌려주는 에러 코드가 들어갑니다.

ftpChdir() (은)는, 서버의 CD 명령을 내, dir 그리고 지정되었다 디렉토리로 변경하려고 합니다. 문제가 없으면 0 이 돌려주어집니다. 문제가 있는 경우는, 서버의 에러 코드가 돌려주어집니다.

ftpErrno() (은)는, 마지막 오퍼레이션의 서버 에러 코드를 돌려줍니다. FTP 의 에러 코드에 정통하고 있는 경우는, 에러의 원인의 확인에 유익합니다. ftpErrString() (은)는, 인간이 판독할 수 있는 서버 에러 코드를 돌려줍니다.

ftpGet() (은)는, file 인수가 지정하는 파일을 꺼내 (FTP 서버의 커런트 디렉토리 (으)로부터의 상대 패스와 상정된다. ftpChdir() 참조), 그 파일을 위한 새로운 FILE* 포인터를 돌려줍니다. 에러가 발생했을 경우는 NULL 를 돌려줍니다. seekto 하지만 NULL 가 아닌 경우, 이것이 가리키는 정수의 내용은, 파일의 재개 포인트 (으)로서 사용됩니다. 즉, 돌려주어진 스트림은, 파일의 *seekto 바이트를 가리키고 있다고 하는 것입니다. 이것은, 에러로 실패한 전송을 효율적으로 재개할 때에 편리합니다. 시크 조작이 에러가 되었을 경우, *seekto 의 값은 0 이 됩니다.

ftpGetModtime() (은)는, file 인수가 지정하는 파일의 최종 수정 시각을 돌려줍니다. 파일을 오픈할 수 없는 경우는 0 이 돌려주어집니다.

ftpGetSize() (은)는, file 인수가 지정하는 파일의 사이즈를 바이트 단위로 돌려줍니다. 파일을 오픈할 수 없는 경우는 -1 이 돌려주어집니다.

ftpPut() (은)는, file 인수가 지정하는 새로운 파일을 작성해 (FTP 서버의 커런트 디렉토리로부터의 상대 패스와 상정된다. ftpChdir() 참조), 파일의 새롭다 stream 포인터를 돌려줍니다. 에러가 발생했을 경우는 NULL 를 돌려줍니다.

ftpAscii() (은)는, stream 하지만 지정하는 현행 서버의 connection에 ASCII 모드를 설정합니다.

ftpBinary() (은)는, stream 하지만 지정하는 현행 서버의 connection에 바이너리 모드를 설정합니다.

ftpPassive() (은)는, stream 하지만 지정하는 현재의 서버의 connection의 패시브 모드 (파이어 월(fire wall)용)(을)를 논리치 status (으)로 설정합니다.

ftpVerbose() (은)는, stream 하지만 지정하는 현재의 서버의 connection의 장황 모드를 논리치 status (으)로 설정합니다.

ftpGetURL() (은)는, URL 하지만 지정하는 파일을 꺼냅니다. 이것은, 서버의 stream 하지만 돌려주어지지 않은 것 제외하면, ftpLogin(), ftpChdir(), ftpGet() (을)를 조합한 조작과 같은으로 간주할 수가 있습니다. 서버와의 connection는, 파일이 완전하게 읽힌 시점에서 클로우즈 됩니다. 복수의 파일을 꺼내는 경우는, 저레벨의 routine (을)를 사용해 주세요. 이 (분)편이 아득하게 효율적입니다.

ftpPutURL() (은)는, URL 하지만 지정하는 파일을 작성합니다. 이것은, 서버의 stream 하지만 돌려주어지지 않은 것을 제외하면, ftpLogin(), ftpChdir(), ftpPut() (을)를 조합한 조작과 같은으로 간주할 수가 있습니다. 서버와의 connection는, 파일이 완전하게 기입해진 시점에서 클로우즈 됩니다. 복수의 파일을 작성하는 경우는, 저레벨의 routine (을)를 사용해 주세요. 이 (분)편이 아득하게 효율적입니다.

ftpLoginAf(), ftpGetURLAf(), ftpPutURLAf() (은)는, ftpLogin(), ftpGetURL(), ftpPutURL() (와)과 같습니다만, 주소 패밀리 except that they are able to specify address family af (을)를 지정 가능한 점이 다릅니다.

환경 변수

FTP_TIMEOUT
    FTP 접속을 이상종료(ABEND) 시키기 전에, 통신 상대로부터의 응답을 기다리는 최대 시간 (초단위)입니다.

FTP_PASSIVE_MODE
    정의되고 있는 경우, 패시브 모드 FTP (을)를 강제적으로 사용합니다. 다만 ``NO''또는 ``no''에 정의되고 있는 경우는, 액티브 모드를 강제적으로 사용합니다. 정의되고 있는 경우, 이 변수의 설정은, ftpPassive() 의 호출해에 우선합니다.

버그
진한 개를 철저하게 유용하면(자), 내부 상태 머신을 혼란시켜 버릴 가능성이 있습니다만, 내가 테스트한 마지막으로는, 매우 튼튼하게 만들어지고 있는 것이 확인해 있습니다.

역사
Poul-Henning Kamp 의 시스템 Installation 유틸리티용 ftp 드라이버로서 시작되어, Jordan Hubbard 가, stdio 의 확장이라고 한다 보다 일반적인 형식으로 변경했습니다. Jean-Marc Zucconi 의 아이디어와 확장 기능도 몇개인가 포함되어 있습니다.

저자
Jordan Hubbard, Poul-Henning Kamp, Jean-Marc Zucconi