VB6.0用掲示板の過去のログ(No.1)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [過去ログ] [管理用]

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


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- Web Forum -