Writing Your Own FTP Client Program


Program 1
#include <windows.h>
#include <wininet.h>
#include <stdio.h>
char aa[100];char bb[100];char cc[200];
void *m_hSession,*hC,*hF;
void abc(char *p)
{
   FILE *fp=fopen("d:\\ftp\\z.txt","a+");
   fprintf(fp,"%s\n",p);
   fclose(fp);
}
long _stdcall zzz (HWND,UINT,WPARAM,LPARAM);
WNDCLASS a;HWND b;MSG c;

int _stdcall WinMain(HINSTANCE i,HINSTANCE j,char *k,int l)
{
   a.lpszClassName="a1";
   a.hInstance=i;
   a.lpfnWndProc=zzz;
   a.hbrBackground=GetStockObject(WHITE_BRUSH);
   RegisterClass(&a);
   b=CreateWindow("a1","aaa",WS_OVERLAPPEDWINDOW,1,1,10,20,0,0,i,0);
   ShowWindow(b,3);
   while ( GetMessage(&c,0,0,0) )
         DispatchMessage(&c);
   return 1;
}
long _stdcall zzz (HWND w,UINT x,WPARAM y,LPARAM z)
{
   if ( x == WM_LBUTTONDOWN)
   {
      m_hSession=InternetOpen("MSDN ",0,0,0,0);
      sprintf(aa,"InternetOpen m_hSession %p",m_hSession);
      MessageBox(0,aa,aa,0);
      hC=InternetConnect(m_hSession,"ftp.microsoft.com",
        0,"anonymous","w@eworld.com",INTERNET_SERVICE_FTP,0,0) ;
      sprintf(aa,"InternetConnect hC %p",hC);
      MessageBox(0,aa,aa,0);
      hF=FtpOpenFile(hC,"disclaimer.txt",GENERIC_READ,
                                         FTP_TRANSFER_TYPE_ASCII,0);
      char * m_buffer = new char[712+1] ;
      DWORD dwBytesRead ;
      BOOL bRead=InternetReadFile(hF,m_buffer,712+1,&dwBytesRead);
      sprintf(aa,"InternetReadFile dwBytesRead %ld bRead %d",
                                            dwBytesRead,bRead);
      MessageBox(0,aa,aa,0);
      abc(m_buffer);
      MessageBox(0,"all over","hi",0);
   }
   if ( x == WM_DESTROY)
           PostQuitMessage(0);
   return DefWindowProc(w,x,y,z);
}
Program 2
#include <windows.h>
#include <wininet.h>
#include <stdio.h>
char aa[100];char bb[100];char cc[200];
WIN32_FIND_DATA p;
void *m_hSession,*hC,*hF;
void abc(char *p)
{
  FILE *fp=fopen("d:\\ftp\\z.txt","a+");
  fprintf(fp,"%s\n",p);
  fclose(fp);
}
long _stdcall zzz (HWND,UINT,WPARAM,LPARAM);
WNDCLASS a;HWND b;MSG c;int r;

int _stdcall WinMain(HINSTANCE i,HINSTANCE j,char *k,int l)
{
  a.lpszClassName="a1";
  a.hInstance=i;
  a.lpfnWndProc=zzz;
  a.hbrBackground=GetStockObject(WHITE_BRUSH);
  RegisterClass(&a);
  b=CreateWindow("a1","aaa",WS_OVERLAPPEDWINDOW,1,1,10,20,0,0,i,0);
  ShowWindow(b,3);
  while ( GetMessage(&c,0,0,0) )
         DispatchMessage(&c);
  return 1;
}
long _stdcall zzz (HWND w,UINT x,WPARAM y,LPARAM z)
{
  if ( x == WM_LBUTTONDOWN)
  {
     m_hSession=InternetOpen("MSDN ",0,0,0,0);
     sprintf(aa,"InternetOpen m_hSession %p",m_hSession);
     MessageBox(0,aa,aa,0);
     hC=InternetConnect(m_hSession,"ftp.microsoft.com",
          0,"anonymous","w@eworld.com",INTERNET_SERVICE_FTP,0,0) ;
     sprintf(aa,"InternetConnect hC %p",hC);
     MessageBox(0,aa,aa,0);
     hF = FtpFindFirstFile(hC,"",(LPWIN32_FIND_DATA)&p,0,(DWORD)&bb); 
     sprintf(aa,"FtpFindFirstFile..%p",hF);
     MessageBox(0,aa,aa,0);
     sprintf(aa,"InternetFindFirstFile  cFileName ..%s",p.cFileName);
     MessageBox(0,aa,aa,0);
     if (hF)
     {
      r =InternetFindNextFile(hF,&p);
      while (r)
      {  sprintf(aa,"InternetFindNextFile r = %d cFileName ..%s",
                                                   r,p.cFileName);
         MessageBox(0,aa,aa,0);
         r =InternetFindNextFile(hF,&p);
      }
     }
     MessageBox(0,"all over","hi",0);
    }
    if ( x == WM_DESTROY)
        PostQuitMessage(0);
    return DefWindowProc(w,x,y,z);
}
Program 3
#include <windows.h>
#include <wininet.h>
#include <stdio.h>
char aa[100];char bb[100];char cc[200];
WIN32_FIND_DATA p;
void *m_hSession,*hC,*hF;
void abc(char *p)
{
   FILE *fp=fopen("d:\\ftp\\z.txt","a+");
   fprintf(fp,"%s\n",p);
   fclose(fp);
}
long _stdcall zzz (HWND,UINT,WPARAM,LPARAM);
WNDCLASS a;HWND b;MSG c;int r;

int _stdcall WinMain(HINSTANCE i,HINSTANCE j,char *k,int l)
{
  a.lpszClassName="a1";
  a.hInstance=i;
  a.lpfnWndProc=zzz;
  a.hbrBackground=GetStockObject(WHITE_BRUSH);
  RegisterClass(&a);
  b=CreateWindow("a1","aaa",WS_OVERLAPPEDWINDOW,1,1,10,20,0,0,i,0);
  ShowWindow(b,3);
  while ( GetMessage(&c,0,0,0) )
        DispatchMessage(&c);
  return 1;
}
long _stdcall zzz (HWND w,UINT x,WPARAM y,LPARAM z)
{
   if ( x == WM_LBUTTONDOWN)
   {
      m_hSession=InternetOpen("MSDN ",0,0,0,0);
      sprintf(aa,"InternetOpen m_hSession %p",m_hSession);
      MessageBox(0,aa,aa,0);
      hC=InternetConnect(m_hSession,"ftp.microsoft.com",
         0,"anonymous","w@eworld.com",INTERNET_SERVICE_FTP,0,0) ;
      sprintf(aa,"InternetConnect hC %p",hC);
      MessageBox(0,aa,aa,0);
      hF = FtpFindFirstFile(hC,"",(LPWIN32_FIND_DATA)&p,0,(DWORD)&bb); 
      sprintf(aa,"FtpFindFirstFile..%p",hF);
      MessageBox(0,aa,aa,0);
      sprintf(aa,"InternetFindFirstFile  cFileName ..%s..attr..%ld",
                                p.cFileName,p.dwFileAttributes);
      MessageBox(0,aa,aa,0);
 // attr - 16 ....directories...128 ... filename
      if (hF )
      {
        r =InternetFindNextFile(hF,&p);
        while (r)
       {
       sprintf(aa,"InternetFindNextFile r = %d cFileName.%s.attributes..%ld",
                r,p.cFileName,p.dwFileAttributes);
       MessageBox(0,aa,aa,0);
       r =InternetFindNextFile(hF,&p);
       }
     }
     MessageBox(0,"all over","hi",0);
   }
   if ( x == WM_DESTROY)
      PostQuitMessage(0);
   return DefWindowProc(w,x,y,z);
}
Program 4

#include <windows.h>
#include <wininet.h>
#include <stdio.h>
char aa[100];char bb[100];char cc[200];
WIN32_FIND_DATA p;
void *m_hSession,*hC,*hF;
void abc(char *p)
{
  FILE *fp=fopen("d:\\ftp\\z.txt","a+");
  fprintf(fp,"%s\n",p);
  fclose(fp);
}
long _stdcall zzz (HWND,UINT,WPARAM,LPARAM);
WNDCLASS a;HWND b;MSG c;int r;

int _stdcall WinMain(HINSTANCE i,HINSTANCE j,char *k,int l)
{
  a.lpszClassName="a1";
  a.hInstance=i;
  a.lpfnWndProc=zzz;
  a.hbrBackground=GetStockObject(WHITE_BRUSH);
  RegisterClass(&a);
  b=CreateWindow("a1","aaa",WS_OVERLAPPEDWINDOW,1,1,10,20,0,0,i,0);
  ShowWindow(b,3);
  while ( GetMessage(&c,0,0,0) )
    DispatchMessage(&c);
  return 1;
}
long _stdcall zzz (HWND w,UINT x,WPARAM y,LPARAM z)
{
if ( x == WM_LBUTTONDOWN)
{
  m_hSession=InternetOpen("MSDN ",0,0,0,0);
  sprintf(aa,"InternetOpen m_hSession %p",m_hSession);
  MessageBox(0,aa,aa,0);
  hC=InternetConnect(m_hSession,"ftp.microsoft.com",
         0,"anonymous","w@eworld.com",INTERNET_SERVICE_FTP,0,0) ;
  sprintf(aa,"InternetConnect hC %p",hC);
  MessageBox(0,aa,aa,0);
  r=FtpSetCurrentDirectory(hC,"developr");
  sprintf(aa,"FtpSetCurrentDirectory..%d", r);
  MessageBox(0,aa,aa,0);
  hF = FtpFindFirstFile(hC,"",(LPWIN32_FIND_DATA)&p,0,(DWORD)&bb); 
  sprintf(aa,"FtpFindFirstFile..%p",hF);
  MessageBox(0,aa,aa,0);
  sprintf(aa,"InternetFindFirstFile  cFileName ..%s..attr..%ld",p.cFileName,p.dwFileAttributes);
  MessageBox(0,aa,aa,0);
  if (hF )
  {
    r =InternetFindNextFile(hF,&p);
    while (r)
   {
    sprintf(aa,"InternetFindNextFile r = %d cFileName .%s.attributes.%ld",
                                        r,p.cFileName,p.dwFileAttributes);
    MessageBox(0,aa,aa,0);
    r =InternetFindNextFile(hF,&p);
   }
  }
  MessageBox(0,"all over","hi",0);
 }
 if ( x == WM_DESTROY)
    PostQuitMessage(0);
 return DefWindowProc(w,x,y,z);
}
Program 5

#include <windows.h>
#include <wininet.h>
#include <stdio.h>
char aa[100];char bb[100];char cc[200];DWORD m_r;int i;
void abc(char *p)
{
  FILE *fp=fopen("d:\\ftp\\z.txt","a+");
  fprintf(fp,"%s\n",p);
  fclose(fp);
}
long _stdcall zzz (HWND,UINT,WPARAM,LPARAM);
WNDCLASS a;HWND b;MSG c;void *m_hSession;INTERNET_STATUS_CALLBACK dwISC;
void *m_hC,*m_hLastHandleCreated; WIN32_FIND_DATA pvx,pvx1;
INTERNET_ASYNC_RESULT *z;HINTERNET hEnum,hFile;
void CALLBACK yyy(HINTERNET hInternet,
DWORD dwContext,DWORD dwInternetStatus, LPVOID lpvStatusInformation,
DWORD dwStatusInformationLength)
{
	if ( dwInternetStatus == INTERNET_STATUS_HANDLE_CREATED)
	{
         m_hLastHandleCreated = (HINTERNET)lpvStatusInformation;
	}
	if (dwInternetStatus ==  INTERNET_STATUS_RESOLVING_NAME)
	{
         sprintf(aa," INTERNET_STATUS_RESOLVING_NAME %s",lpvStatusInformation);
         abc(aa);
	}
	if ( dwInternetStatus ==  INTERNET_STATUS_NAME_RESOLVED)
	{
         sprintf(aa," INTERNET_STATUS_NAME_RESOLVED %s",lpvStatusInformation);
         abc(aa);
	}
        if ( dwInternetStatus ==INTERNET_STATUS_CONNECTING_TO_SERVER)
        {
         abc("INTERNET_STATUS_CONNECTING_TO_SERVER");
        }
        if ( dwInternetStatus ==INTERNET_STATUS_CONNECTED_TO_SERVER)
        {
         abc("INTERNET_STATUS_CONNECTED_TO_SERVER");
        }
        if ( dwInternetStatus ==INTERNET_STATUS_RECEIVING_RESPONSE)
        {
         abc("INTERNET_STATUS_RECEIVING_RESPONSE");
        }
        if ( dwInternetStatus ==INTERNET_STATUS_RESPONSE_RECEIVED)
        {
         abc("INTERNET_STATUS_RESPONSE_RECEIVED");
        }
        if ( dwInternetStatus ==INTERNET_STATUS_SENDING_REQUEST)
        {
         abc("INTERNET_STATUS_SENDING_REQUEST");
        }
        if ( dwInternetStatus ==INTERNET_STATUS_REQUEST_SENT)
        {
         abc("INTERNET_STATUS_REQUEST_SENT");
        }
        if ( dwInternetStatus ==INTERNET_STATUS_REQUEST_COMPLETE)
        {
        z =(INTERNET_ASYNC_RESULT *) lpvStatusInformation;
        sprintf(aa,"INTERNET_STATUS_REQUEST_COMPLETE %ld",z->dwResult);
        abc(aa);
        if ( z ->dwResult == 13369352)
	{
                hEnum = hInternet;
                dwISC=InternetSetStatusCallback(m_hSession,yyy); 
                sprintf(aa,"dwISC %ld",dwISC );
                abc(aa);
                m_hC = InternetConnect(m_hSession,"ftp.microsoft.com",
                   INTERNET_INVALID_PORT_NUMBER,"anonymous","a@eworld.com",
                   INTERNET_SERVICE_FTP,0,(DWORD)&bb);
                sprintf(aa,"m_hC %p hInternet %p",m_hC,hInternet); 
                abc(aa);
        }
        if ( z->dwResult == 13369360)
	{
                hEnum = hInternet;
                hFile=FtpFindFirstFile(hEnum,"/*",(LPWIN32_FIND_DATA)&pvx,
                                                        0,(DWORD)&bb);
                sprintf(aa,"FtpFindFirstFile hFile %p hInternet %p",
                                                        hFile,hInternet);
                abc(aa); 
                int r =InternetFindNextFile(hFile,&pvx);
                sprintf(aa,"InternetFindNextFile r = %d cFileName %s",
                                                        r,pvx.cFileName);
                abc(aa);
	}
        if (z->dwResult == 1)
        {
         if ( i == 0)
         {
           int r =InternetFindNextFile(hFile,&pvx);
           sprintf(aa,"InternetFindNextFile r = %d cFileName %s hInternet %p",
                                r,pvx.cFileName,hInternet);
           abc(aa);
         }
         if ( i == 1)
         {
                InternetCloseHandle(hFile);
                abc("InternetCloseHandle");
         }
        }
        if ( z->dwResult == 13369372)
        {
                i=1;
                int r=InternetReadFile(hInternet,cc,100, &m_r );
                sprintf(aa,"InternetReadFile r = %d m_r = %ld hInternet %p",
                                                        r,m_r,hInternet );
                abc(aa);
                abc(cc);
                DWORD x = GetLastError();
                sprintf(aa,"InternetReadFile %ld",x);
                abc(aa);
        }
        }
}
int _stdcall WinMain(HINSTANCE i,HINSTANCE j,char *k,int l)
{
        a.lpszClassName="a1";
        a.hInstance=i;
        a.lpfnWndProc=zzz;
        a.hbrBackground=GetStockObject(WHITE_BRUSH);
        RegisterClass(&a);
        b=CreateWindow("a1","aaa",WS_OVERLAPPEDWINDOW,1,1,10,20,0,0,i,0);
        ShowWindow(b,3);
        while ( GetMessage(&c,0,0,0) )
                DispatchMessage(&c);
        return 1;
}
long _stdcall zzz (HWND w,UINT x,WPARAM y,LPARAM z)
{
if ( x == WM_RBUTTONDOWN)
{
        hFile=FtpOpenFile(hEnum,"/disclaimer.txt",
                        GENERIC_READ,FTP_TRANSFER_TYPE_ASCII,(DWORD)bb);
        sprintf(aa,"FtpOpenFile hFile %p hEnum %p",hFile,hEnum);
        abc(aa);
}
if ( x == WM_LBUTTONDOWN)
{
        abc("start");
        m_hSession=::InternetOpen("AsyncFtp",1,0,0,INTERNET_FLAG_ASYNC);
        sprintf(aa,"m_hSession %p",m_hSession);
        abc(aa);
        dwISC=InternetSetStatusCallback(m_hSession,yyy); 
        sprintf(aa,"dwISC %ld",dwISC );
        abc(aa);
        m_hC=InternetConnect(m_hSession,"ftp.microsoft.com",0,
        "anonymous","a@eworld.com",INTERNET_SERVICE_FTP,0,(DWORD)&bb); 
        sprintf(aa,"m_hC %p",m_hC); 
        abc(aa);
        MessageBox(0,"all over","hi",0);
}
if ( x == WM_DESTROY)
        PostQuitMessage(0);
return DefWindowProc(w,x,y,z);
}


Have any suggestions, comments, ideas, cracked code, feedback. Feel free to get in touch with us.

Move back to the Vijay Mukhi's Technology Cornucopia Page to learn more about the other new Internet Technologies.


Vijay Mukhi's Computer Institute
VMCI, B-13, Everest Building, Tardeo, Bombay 400 034, India
E-mail:vmukhi@giasbm01.vsnl.net.in Tel : 91-22-496 4335 /6/7/8/9 Fax : 91-22-307 28 59
http://www.vijaymukhi.com