HINTERNET InternetConnect( IN HINTERNET hInternet, IN LPCTSTR ServerName, IN INTERNET_PORT Port, IN LPCTSTR UserName OPTIONAL, IN LPCTSTR Password OPTIONAL, IN DWORD Service, IN DWORD Flags, IN DWORD Context);
引数の意味は以下の通り。
| hInternet | InternetOpenで返されたハンドル。 |
| ServerName | 接続先のホスト名またはドット表記のIPアドレス。 |
| Port | 接続するTCP/IPポート。既定の値については後述の表を参照。また、0を指定した場合、デフォルトのポートが使用される。 |
| UserName | 接続の際に使用されるユーザ名。HTTP以外の場合は、NULLを指定した場合デフォルト(FTPなら"anonymous")が使用される。 |
| Password | 接続の際に使用されるパスワード。FTPでUserNameとPasswordが共にNULLの場合、Passwordはe-mailアドレスが使用される。 |
| Service | アクセスするサービスのタイプ。後述の表を参照。 |
| Flags | サービス固有のフラグ値。後述の表を参照。 |
| Context | コールバック関数に渡されるアプリケーション定義の32bit値。 |
Portに指定可能なポートの内以下のものが既定のポートとして定められている。
| INTERNET_DEFAULT_FTP_PORT | FTP |
| INTERNET_DEFAULT_GOPHER_PORT | Gopher |
| INTERNET_DEFAULT_HTTP_PORT | HTTP |
| INTERNET_DEFAULT_HTTPS_PORT | HTTPS |
Serviceに指定可能な値は以下のフラグのいずれかである。
| INTERNET_SERVICE_FTP | FTP |
| INTERNET_SERVICE_GOPHER | Gopher |
| INTERNET_SERVICE_HTTP | HTTP |
ServiceがINTERNET_SERVICE_FTPの場合、Flagsには以下のいずれかの値が指定可能。
| INTERNET_CONNECT_FLAG_PASSIVE | パッシブモードで接続する。 |
戻り値は、確立された接続を識別するハンドルである。関数の実行に失敗した場合、NULLが返される。
void EnumFtpFiles()
{
HINTERNET hInternet;
HINTERNET hFtpSession;
HINTERNET hFind;
WIN32_FIND_DATA fd;
/* WININETの初期化 */
hInternet = InternetOpen(
"WININET Sample Program",
INTERNET_OPEN_TYPE_DIRECT,
NULL,
NULL,
0);
/* ftp.foo.barへ接続 */
hFtpSession = InternetConnect(
hInternet,
"ftp.foo.bar",
INTERNET_DEFAULT_FTP_PORT,
NULL,
NULL,
INTERNET_SERVICE_FTP,
0,
0);
/* ファイルを列挙し、表示 */
hFind = FtpFindFirstFile(hFtpSession, "pub/Misc/", &fd, 0, 0);
if(hFind != NULL) do {
printf("%s\n", fd.cFileName);
} while(InternetFindNextFile(hFind, &fd));
/* 後処理 */
InternetCloseHandle(hFind);
InternetCloseHandle(hFtpSession);
InternetCloseHandle(hInternet);
}