날짜: 1996-05-06 | 글쓴이: 도아 | 21709 번 | 프린트 | 메일로보내기

펄 응용 - 제 6강 Win32::Internet 사용자 길잡이 - 계속


일반 인터넷 함수 일반적 설명 모든 메소드는 메소드를 호출하기 전에 다음과 같은 행을 가지고 있는 것으로 가정한다:
use Win32::Internet;
또한 이 호출을 사용해서 생성된 $INET라는 인터넷 개체를 가지고 있는 것으로 가정한다.
$INET = new Win32::Internet();
보다 자세한 정보는 new을 본다. 메소드
CanonicalizeURL URL, [flags]
URL을 규칙에 맞는 형식으로 변환한다. 이때 받아들여지지 않는 문자는 Escape된다. 규칙에 맞는 URL이 리턴되거나 undef(오류 발생시)가 리턴된다. flags에 가능한 값은 Microsoft Win32 인터넷 함수를 참고한다. 또한 CombineURLOpenURL를 본다. 예:
$cURL = $INET->CanonicalizeURL($URL);
$URL = $INET->CanonicalizeURL($cURL, ICU_DECODE);
Close
Close object
인터넷 접속을 닫는다. 이 것은 임의의 Win32::Internet 개체(인터넷 접속, URL, FTP 세션등)에 적용될 수 있다. Win32::Internet 개체는 프로그램이 종료될 때 자동적으로 닫히기때문에 반드시 생성할 개체를 닫을 필요는 없다. 예:
$INET->Close();
$FTP->Close();
$INET->Close($FTP); # same as above...
CombineURL baseURL, relativeURL, [flags]
기본 URL과 상대 URL을 하나의 URL로 결합한다. 결합된 URL이나 undef(오류 발생시)가 리턴된다. flags에 가능한 값은 Microsoft Win32 인터넷 함수를 참고한다. 또한 CombineURLOpenURL를 본다. 예:
$URL = $INET->CombineURL("http://www.divinf.it/dada/perl/internet", "..");
ConnectBackoff [value]
접속 재 시도시 대기 시간(1000분의 1초)을 읽거나 설정한다. value가 지정되지 않으면 현재의 값이 리턴되며, 그렇지 않으면 재시도 사이의 지연시간이 value로 설정된다. ConnectTimeout, ConnectRetries, QueryOptionSetOption을 본다. 예:
$HTTP->ConnectBackoff(2000);
$backoff = $HTTP->ConnectBackoff();
ConnectRetries [value]
접속을 실패한 것으로 간주하기전에 다시 접속할 시도 횟수를 읽거나 설정한다. value가 지정되지 않으면 현재의 값이 리턴되며, 그렇지 않으면 재시도 횟수가 value로 설정된다. 기본값은 5이다. ConnectBackoff, ConnectTimeout, QueryOptionSetOption을 본다. 예:
$HTTP->ConnectRetries(20);
$retries = $HTTP->ConnectRetries();
ConnectTimeout [value]
접속을 실패한 것으로 간주하기전에 대기할 시간(1000분의 1초)을 읽거나 설정한다. value가 지정되지 않으면 현재의 값이 리턴되며, 그렇지 않으면 대기시간이 value로 설정된다. 기본값은 무한대이다. ConnectBackoff, ConnectRetries, QueryOptionSetOption을 본다. 예:
$HTTP->ConnectTimeout(10000);
$timeout = $HTTP->ConnectTimeout();
ControlReceiveTimeout [value]
제어코드(비-데이타)를 취소하기전에 제어코드 수신 요청에 사용될 대기시간(1000분의 1초)를 읽거나 설정한다. 현재 이 값은 FTP 세션에대해서만 의미를 갖는다. value가 지정되지 않으면 현재의 값이 리턴되며, 그렇지 않으면 대기시간이 value로 설정된다. 기본값은 무한대이다. ControlSendTimeout, QueryOptionSetOption을 본다. 예:
$HTTP->ControlReceiveTimeout(10000);
$timeout = $HTTP->ControlReceiveTimeout();
ControlSendTimeout [value]
제어코드(비-데이타)를 취소하기전에 제어코드 송신 요청에 사용될 대기시간(1000분의 1초)를 읽거나 설정한다. 현재 이 값은 FTP 세션에대해서만 의미를 갖는다. value가 지정되지 않으면 현재의 값이 리턴되며, 그렇지 않으면 대기시간이 value로 설정된다. 기본값은 무한대이다. ControlReceiveTimeout, QueryOptionSetOption을 본다. 예:
$HTTP->ControlSendTimeout(10000);
$timeout = $HTTP->ControlSendTimeout();
CrackURL URL, [flags]
URL을 구성요소로 분래해서 이들을 배열로 리턴한다. 오류가 발생한 경우에는 undef가 리턴되며, 그렇지 않은 경우에는 다음과 같은 값을 포함하는 배열이 리턴된다: scheme, host, port, username, password, path, extrainfo 예를들어 URL "http://www.divinf.it/index.htm#top"는 다음과 같이 분리될 수 있다: http, www.divinf.it, 80, anonymous, [email protected], /index.htm, #top flags을 지정하지 않는다면 ICU_ESCAPE가 기본적으로 사용된다. ICU_ESCAPE의 값에대해서는 Microsoft Win32 인터넷 함수를 참조한다. 또한 CreateURL을 본다. 예:
@parts=$INET->CrackURL("http://www.activeware.com");
($scheme, $host, $port, $user, $pass, $path, $extra) = 
$INET->CrackURL("http://www.divinf.it:80/perl-win32/index.sht#feedback");
CreateURL scheme, hostname, port, username, password, path, extrainfo, [flags]
CreateURL hashref, [flags]
구성요소로 URL을 생성한다. 오류가 발생한 경우 undef을 리턴하며, 그렇지 않은 경우 생성된 URL을 리턴한다. 만약 hashref(연관배열에대한 참조)를 전달하면 다음 값들이 배열로 부터 취해진다.
%hash=(
	"scheme"	=> "scheme",
	"hostname"	=> "hostname",
	"port"		=> port,
	"username"	=> "username",
	"password"	=> "password",
	"path"		=> "path",
	"extrainfo"	=> "extrainfo"
 );
flags을 지정하지 않의면 ICU_ESCAPE가 기본적으로 사용된다. ICU_ESCAPE의 값에대해서는 Microsoft Win32 인터넷 함수를 참조한다. 또한 CrackURL을 본다. 예:
$URL=$I->CreateURL("http", "www.divinf.it", 80, "", "", "/perl-win32/index.sht", "#feedback");
$URL=$I->CreateURL(\%params);
DataReceiveTimeout [value]
데이타 수신 요청이 취소되기 전에 데이타 수신 요청에 사용될 대기시간(1000분의 1초)을 읽거나 설정한다. value가 지정되지 않으면 현재의 값이 리턴되며, 그렇지 않으면 대기시간이 value로 설정된다. 기본값은 무한대이다. 또한 DataSendTimeout, QueryOptionSetOption을 본다. 예:
$HTTP->DataReceiveTimeout(10000);
$timeout = $HTTP->DataReceiveTimeout();
DataSendTimeout [value]
데이타 송신 요청이 취소되기 전에 데이타 송신 요청에 사용될 대기시간(1000분의 1초)을 읽거나 설정한다. value가 지정되지 않으면 현재의 값이 리턴되며, 그렇지 않으면 대기시간이 value로 설정된다. 기본값은 무한대이다. 또한 DataReceiveTimeout, QueryOptionSetOption을 본다. 예:
$HTTP->DataSendTimeout(10000);
$timeout = $HTTP->DataSendTimeout();
Error
마지막으로 기록된 오류를 배열형식으로 리턴하거나 오류 번호와 오류 설명을 포함한 배열이나 문자열을 리턴한다(환경에따라). 임의의 Win32::Internet 개체(FTP 세션등)에 적용될 수 있다. 접할 수 있는 오류는 다음과 같은 3가지 형태를 갖는다. 이들은 리턴된 오류번호에의해 인식된다:
오류번호 의미
-1 패키지내에서 사소한 오류가 발생했다. 예를들어 잘못된 개체형으로 메소드를 사용하려고 했다.
1 .. 11999 일반적 오류가 발생했으며, Win32::GetLastError의 오류 메시지가 리턴된다.
12000과 이상 인터넷 오류가 발생했다; 확장 Win32 인터넷 API의 오류 메시지가 리턴된다.
또한 GetResponse을 본다. 예:
die $INET->Error(), qq();
($ErrNum, $ErrText) = $INET->Error();
FetchURL URL
HTTP, FTP, GOPHER URL의 내용을 가져온다. 읽은 파일의 내용이 리턴된다(또는 오류가 발생했거나 어떠한 것도 읽지 못했다면 undef가 리턴된다). 또한 OpenURLReadFile을 본다. 예:
$file = $INET->FetchURL("http://www.yahoo.com/");
$file = $INET->FetchURL("ftp://www.activeware.com/contrib/internet.zip");
FTP ftpobject, server, username, password, [port, pasv, context]
FTP ftpobject, hashref
주어진 usernamepassword로 접속할 server에대해 FTP 접속을 연다. 매개변수와 값은 다음과 같다.
매개변수 의미 기본값
server 접속할 서버 없음
username 서버에 로그인 하는데 사용되는 사용자 이름 anonymous
password 서버에 로그인 하는데 사용되는 암호 없음
port 서버의 FTP 포트 21
pasv "0" 이외의 값을 사용하면 PASS 전송모드가 사용된다. 부모 인터넷 개체로부터 취해진다; 이값을 Pasv 메소드로 설정할 수 있다.
context 비동기인 경우 동작을 확인하기위한 번호. 비동기 동작에대한 보다 자세한 정보는 SetStatusCallbackGetStatusCallback을 본다. 없음
만약 hashref(연관배열 참조)을 전달하면 다음과 같은 값들이 배열로부터 취해진다:
%hash=(
	"server"	=> "server",
	"username" 	=> "username",
	"password" 	=> "password",
	"port"		=> port,
	"pasv"     	=> pasv,
	"context"  	=> context,
 );
이 메소드는 접속에 실패할 경우 undef를 리턴하며, 그렇지 않은 경우 임의의 수를 리턴한다. 일단 접속이되면 새롭게 생성된 ftpobject의 메소드로서 임의의 FTP 함수를 호출할 수 있다. 예:
$result = $INET->FTP($FTP, "ftp.activeware.com", "anonymous", "[email protected]");
# and then for example... 

$FTP->Cd("/ntperl/perl5.001m/CurrentBuild");
$params{"server"} = "ftp.activeware.com";
$params{"password"} = "[email protected]";
$params{"pasv"} = 0;
$result = $INET->FTP($FTP,\%params);
GetResponse
마지막으로 수행된 함수에대한 응답으로 원격서버가 전송한 텍스트를 리턴한다. 임의의 Win32::Internet 개체에 적용되며, 특히 FTP 세션에 적용된다. 또한 Error 함수를 본다. 예:
print $INET->GetResponse();
$INET->FTP($FTP, "ftp.activeware.com", "anonymous", "[email protected]");
print $FTP->GetResponse();
GetStatusCallback context
context에의해 확인된 비동기 동작의 진행과정에대한 정보를 리턴한다; 이들 정보는 두개의 값, 상태코드(INTERNET_STATUS_* 상수중 하나)와 상태코드에따른 추가적인 값으로 구성된다; 예를들어 리턴된 상태코드가 INTERNET_STATUS_HANDLE_CREATED라면 두번째 값은 방금 생성된 핸들이 된다. 이 들값에대한 보다 자세한 정보는 Microsoft Win32 인터넷 함수를 참조한다. 또한 SetStatusCallback를 본다. 예:
($status, $info) = $INET->GetStatusCallback(1);
HTTP httpobject, server, username, password, [port, flags, context]
HTTP httpobject, hashref
주어진 usernamepassword로 접속할 server에대한 HTTP 접속을 연다. 매개변수와 값은 다음과 같다:
매개변수 의미 기본값
server 접속할 서버 없음
username 서버에 로그인 하는데 사용되는 사용자 이름 anonymous
password 서버에 로그인 하는데 사용되는 암호 없음
port 서버의 HTTP 포트 80
flags 함수 동작에 영향을 미치는 추가적인 플랙 없음
context 비동기인경우 동작을 확인하기위한 번호. 비동기 동작에대한 보다 자세한 정보는 SetStatusCallbackGetStatusCallback을 본다. 없음
이들 매개변수에 대한 보다 자세한 정보는 Microsoft Win32 인터넷 함수를 본다. 만약 hashref(연관배열 참조)을 전달한다면 다음과 같은 값들이 배열로부터 취해진다:
%hash=(
	"server"	=> "server",
	"username" 	=> "username",
	"password" 	=> "password",
	"port"		=> port,
	"flags"		=> flags,
	"context"  	=> context,
);
이 메소드는 접속에 실패할 경우 undef를 리턴하며, 그렇지 않은 경우 임의의 수를 리턴한다. 일단 접속이되면 새롭게 생성된 httpobject의 메소드로서 임의의 HTTP 함수를 호출할 수 있다. 예:
$result = $INET->HTTP($HTTP,"www.activeware.com","anonymous","[email protected]");
# and then for example... 
($statuscode, $headers, $file) = $HTTP->Request("/gifs/camel.gif");

$params{"server"} = "www.activeware.com";
$params{"password"} = "[email protected]";
$params{"flags"} = INTERNET_FLAG_RELOAD;
$result = $INET->HTTP($HTTP,\%params);
new Win32::Internet [useragent, opentype, proxy, proxybypass, flags]
new Win32::Internet [hashref]
새로운 인터넷 개체를 생성하고 인터넷 함수의 사용을 초기화한다; 이것은 이 패키지의 임의의 함수가 사용되기전에 실행되어야 한다. 접속에 실패하면 undef가 리턴되며, 그렇지 않은 경우 임의의 수를 리턴한다. 매개변수와 값은 다음과 같다:
매개변수 의미 기본값
useragent HTTP 요청을 전달한 클라이언트. OpenRequest을 본다. Perl-Win32::Internet/version
opentype 인터넷을 접근하는 방법(예, 직접 또는 프록시 사용). INTERNET_OPEN_TYPE_DIRECT
proxy 사용할 프록시 서버(또는 서버)의 이름. 없음
proxybypass 호스트 명 또는 IP 주소, 또는 둘다의 목록. 없음
flags 함수의 동작에 영향을 미치는 추가적인 플랙. 없음
이들 매개변수에 대한 보다 자세한 정보는 Microsoft Win32 인터넷 함수를 본다. 만약 hashref(연관배열 참조)을 전달한다면 다음과 같은 값들이 배열로부터 취해진다:
%hash=(
	"useragent"   	=> "useragent",
	"opentype"    	=> "opentype",
	"proxy"       	=> "proxy",
	"proxybypass" 	=> "proxybypass",
	"flags"       	=> flags,
);
예:
$INET = new Win32::Internet();
die qq(Cannot connect to Internet...) if ! $INET;

$INET = new Win32::Internet("Mozilla/3.0", INTERNET_OPEN_TYPE_PROXY, "www.Microsoft.com", "");

$params{"flags"} = INTERNET_FLAG_ASYNC;
$INET = new Win32::Internet(\%params);
OpenURL urlobject, URL
HTTP, FTP, GOPHER URL에대한 접속을 연다. 오류가 발생하면 undef를 리턴하며, 접속이 성공적인 경우에는 임의의 수를 리턴한다. 일단 접속되면 새로 생성된 urlobject에대한 메소드, QueryDataAvailableReadFile를 적용함으로서 URL의 내용을 읽을 수 있다. 또한 FetchURL을 본다. 예:
$INET->OpenURL($URL, "http://www.yahoo.com/");
$bytes = $URL->QueryDataAvailable();
$file = $URL->ReadEntireFile();
$URL->Close();
Password [password]
FTPHTTP 접속에 사용된 암호를 읽거나 설정한다. password 매개변수가 지정되지 않으면 현재의 값이 리턴되며, 그렇지 않으면 암호가 password로 설정된다. 또한 Username, QueryOptionSetOption을 본다. 예:
$HTTP->Password("splurfgnagbxam");
$password = $HTTP->Password();
QueryDataAvailable
ReadFile에 이어지는 호출에의해 즉시 읽혀질 수 있는 데이타의 크기(바이트)를 리턴한다(오류가 발생하는 경우에는 undef를 리턴한다). URL이나 HTTP 요청 개체에 적용될 수 있다. 예:
$INET->OpenURL($URL, "http://www.yahoo.com/");
$bytes = $URL->QueryDataAvailable();
QueryOption option
인터넷 옵션을 질의한다. option에 가능한 값은 Microsoft Win32 인터넷 함수를 참조한다. 또한 SetOption을 본다. 예:
$value = $INET->QueryOption(INTERNET_OPTION_CONNECT_TIMEOUT);
$value = $HTTP->QueryOption(INTERNET_OPTION_USERNAME);
ReadEntireFile
열려진 URL이나 HTTP 요청 개체로부터 사용할 수 있는 모든 데이타를 읽는다. 일반적으로 읽혀진 데이타를 리턴하며 오류시 undef를 리턴한다. 또한 ReadFile을 본다. 예:
$INET->OpenURL($URL, "http://www.yahoo.com/");
$file = $URL->ReadEntireFile();
ReadFile bytes
열려진 URL이나 HTTP 요청 개체로부터 데이타를 bytes만큼 읽는다. 일반적으로 읽혀진 데이타를 리턴하며 오류시 undef를 리턴한다. 또한 QueryDataAvailableReadEntireFile를 본다. 주의: bytes를 허용할 수 있는 값으로 유지해야 한다. 사실 ReadEntireFile는 단지 16k를 읽기위해서 QueryDataAvailableReadFile를 순환적으로 사용한다. 예:
$INET->OpenURL($URL, "http://www.yahoo.com/");
$chunk = $URL->ReadFile(16000);
SetOption option, value
인터넷 옵션을 설정한다. 가능한 option의 값은 Microsoft Win32 인터넷 함수를 참조한다. 또한 QueryOption을 본다. 예:
$INET->SetOption(INTERNET_OPTION_CONNECT_TIMEOUT,10000);
$HTTP->SetOption(INTERNET_OPTION_USERNAME,"dada");
SetStatusCallback
비동기 동작의 진행과정에대한 데이타를 리턴하는데 사용되는 콜백을 초기화한다. 예:
$INET->SetStatusCallback();
이 것은 비동기 동작을 수행하는 필요한 단계중 하나이다; 완전한 절차는 다음과 같다:
# use the INTERNET_FLAG_ASYNC when initializing
$params{'flags'}=INTERNET_FLAG_ASYNC;
$INET = new Win32::Internet(\%params);

# initialize the callback routine
$INET->SetStatusCallback();

# specify the context parameter (the last 1 in this case)
$INET->HTTP($HTTP, "www.yahoo.com", "anonymous", "[email protected]", 80, 0, 1);
이 시점에서 제어권은 즉시 펄로 리턴되며 $INET->Error()는 997을 리턴한다. 이 값은 비동기 I/O 동작이 임박했음을 의미한다. 이제 어떠한 일이 발생했는지 확인하기위해 순환문내에 다음과 같은 코드를 호출할 수 있다:
$HTTP->GetStatusCallback(1);
또한 GetStatusCallback를 본다.
TimeConvert time TimeConvert seconds, minute, hours, day, month, year, day_of_week, RFC
첫번째 형식은 HTTP 시간/날자를 취하며 변환된 시간/날자를 다음과 같은 배열로 리턴한다: seconds, minute, hours, day, month, year, day_of_week 두번째 형식은 첫번째 형식과 반대의 동작을 취한다; 즉, 이들 값을 취해 RFC 매개변수에의해 지정된 RFC 형식으로 HTTP 날자/시간을 리턴한다. 예:
($sec, $min, $hour, $day, $mday, $year, $wday) = $INET->TimeConvert("Sun, 26 Jan 1997 20:01:52 GMT");
 
# the opposite DOESN'T WORK! which value should $RFC have???
$time = $INET->TimeConvert(52, 1, 20, 26, 1, 1997, 0, $RFC);
UserAgent [name]
HTTP 요청에 사용된 User Agent를 읽고 설정한다. name 매개변수가 지정되지 않으면 현재의 값이 리턴되며, 그렇지 않으면 User Agent가 name으로 설정된다. 또한 QueryOptionSetOption를 본다. 예:
$INET->UserAgent("Mozilla/3.0");
$useragent = $INET->UserAgent();
Username [name]
FTPHTTP 접속에 사용된 사용자 이름을 읽거나 설정한다. name 매개변수가 지정되지 않으면 현재의 값이 리턴되며, 그렇지 않으면 사용자 이름이 name으로 설정된다. 또한 Password, QueryOptionSetOption를 본다. 예:
$HTTP->Username("dada");
$username = $HTTP->Username();
Version
Win32::Internet 패키지와 WININET.DLL의 버전 번호를 환경에따라 배열이나 문자열로 리턴한다. 리턴된 문자열은 "package_version/DLL_version"을 포함하는 반면, 배열은 "package_version", "DLL_version"을 포함한다. 예:
$version = $INET->Version(); # should return "0.06/4.70.1215"
@version = $INET->Version(); # should return ("0.06", "4.70.1215")


다음글: 펄 응용 - 제 7강 Win32::Internet 부록 (11811)1996-05-08
이전글: 펄 응용 - 제 5강 Win32::Internet 소개 (6826)1996-05-05
<< 이전페이지 (1/4)다음페이지 (3/4) >>



RSS 구독 (익명 | 회원 | 강좌 | 포럼)
(C) 1996 ~ 2017 QAOS.com All rights reserved.