投稿日 | : 2003/10/28(Tue) 18:41 |
投稿者 | : mama |
URL | : |
タイトル | : タイムアウトについて |
はじめまして。よろしくお願いします。
FTPサーバからファイルをダウンロードするアプリを作成中です。
下記のようなソースをかきました。
が、タイムアウトの設定がうまくいってないようで、タイムアウトの処理が
できていません。
下記ソースはタイムアウトの定義と、問題の処理の部分です。
処理は、InternetOpenを行い、InternetConnectをするというものです。
タイムアウトだけが今うまくいかないので、タイムアウトのAPIの、引数・使用方法をお願いします。
'---------------------------------------------------------------
'Option Explicitの宣言(一部)
’-----------------------------------------------------------------
'WinInet を初期化
Private Declare Function InternetOpen Lib "wininet.dll" _
Alias "InternetOpenA" _
(ByVal lpszAgent As String, ByVal dwAccessType As Long, _
ByVal lpszProxyName As String, ByVal lpszProxyBypass As String, _
ByVal dwFlags As Long) As Long
'(FTP, HTTP, Gopher)サービスに接続する
Private Declare Function InternetConnect Lib "wininet.dll" _
Alias "InternetConnectA" _
(ByVal hInternetSession As Long, ByVal lpszServerName As String, _
ByVal nServerPort As Integer, ByVal lpszUsername As String, _
ByVal lpszPassword As String, ByVal dwService As Long, _
ByVal dwFlags As Long, ByVal dwContext As Long) As Long
'タイムアウトの設定関数の定義
Declare Function InternetSetOption Lib "wininet.dll" Alias "InternetSetOptionA" _
(ByVal hInternet As Long, _
ByVal lOption As Long, _
ByRef sBuffer As Any, _
ByVal lBufferLength As Long) As Integer
Const INTERNET_OPTION_CONNECT_TIMEOUT = 2
Const INTERNET_OPTION_RECEIVE_TIMEOUT = 6
Const INTERNET_OPTION_SEND_TIMEOUT = 5
Const INTERNET_OPTION_CONNECT_RETRIES = 3
'---------------------------------------------------------------
'処理(一部)
’-----------------------------------------------------------------
'InternetOpen (Handle を取得)
lngInethnd = InternetOpen(vbNullString, INTERNET_OPEN_TYPE_DIRECT, _
vbNullString, vbNullString, 0)
'タイムアウトの設定
lngConnectTimeOut = 10 * 1000 '接続タイムアウト15秒
lngReceiveTimeOut = 10 * 1000 '受信タイムアウト30秒
intRet = InternetSetOption(lngInethnd, INTERNET_OPTION_CONNECT_TIMEOUT, lngConnectTimeOut, 4)
intRet = InternetSetOption(lngInethnd, INTERNET_OPTION_CONTROL_RECEIVE_TIMEOUT, lngConnectTimeOut, 4)
intRet = InternetSetOption(lngInethnd, INTERNET_OPTION_CONTROL_SEND_TIMEOUT, lngConnectTimeOut, 4)
intRet = InternetSetOption(lngInethnd, INTERNET_OPTION_SEND_TIMEOUT, lngReceiveTimeOut, 4)
intRet = InternetSetOption(lngInethnd, INTERNET_OPTION_RECEIVE_TIMEOUT, lngReceiveTimeOut, 4)
'InternetConnect (上記で取得した Handle で FTP Server に Connect)
lngFtphnd = InternetConnect(lngInethnd, gstrFtpAdd, INTERNET_DEFAULT_FTP_PORT, _
gstrFtpUName, gstrFtpUPasswd, INTERNET_SERVICE_FTP, 0, 0)