[リストへもどる]
一括表示

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

投稿時間:2003/10/29(Wed) 14:13
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: タイムアウトについて
調べる対象が解っているのだから、WEBで関数名で検索して見て下さい
当サイト内・外の検索からGoogleで[InternetSetOption]をキーワードに検索
してみて下さい。

投稿時間:2003/10/29(Wed) 17:59
投稿者名:mama
URL :
タイトル:
Re^2: タイムアウトについて
レスありがとうございます。
やってみます。