A1VBCode Forums

Problem related to InternetWriteFile


http://www.a1vbcode.com/vbforums/Topic11710.aspx

By M.L.Srinivas - 5/26/2005

Hi,

I am facing a problem related to InternetWriteFile of WININET API.

I am in the process of developing a FTP program, which periodically check a local directory and uploads the any few files available in that directory.

I am using Wininet (internetwritefile) to transfer for the file. I am able to show the progress also. The problem comes only when there is connection error/break while file transfer.

The execution never stops (probably it doesn't get timed out). How to overcome this problem?
I want to return an error when the data flow is obstructed for about certain amount of time and restart the entire process after sometime. Currently my application gets hanged.

Any sort of help is appreciated.

Here is my code:

        hFile = FtpOpenFile(hConnection, szFileRemote, &H40000000, dwType, 0)
        If hFile = 0 Then
            ErrorOut Err.LastDllError, "FtpOpenFile"
            Txtstr.WriteLine "Unable to open file on remote server"
            GoTo CloseObjects
        End If
        Open CurFile For Binary Access Read As #1
        Size = LOF(1)
       
        For j = 1 To Size \ 100
            Get #1, , Data
            If (InternetWriteFile(hFile, Data(0), 100, Written) = 0) Then
                Close #1
                ErrorOut Err.LastDllError, "InternetWriteFile"
                GoTo CloseObjects
            End If
            DoEvents
            sum = sum + 100
            Sbar.Panels(1).Text = CStr(Round((sum * 100) / lLocalflsize)) & "%"
            DoEvents
            Pbar1.Value = sum
        Next j
        If Size Mod 100 <> 0 Then
        Get #1, , Data
        If (InternetWriteFile(hFile, Data(0), Size Mod 100, Written) = 0) Then
                Close #1
                ErrorOut Err.LastDllError, "InternetWriteFile"
                GoTo CloseObjects
        End If 'internet file
        End If 'If Size Mod 100 <> 0
       
        sum = sum + (Size Mod 100)
       
        Sbar.Panels(1).Text = CStr(Round((sum * 100) / lLocalflsize)) & "%"
        Close #1
        InternetCloseHandle (hFile)


Thanks
M.L.Srinivas