投稿時間: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)
|