Thread: How to use FTP?

Threaded View

Previous Post Previous Post   Next Post Next Post
  1. #1
    Reverse Engineer maxorator's Avatar
    Join Date
    Aug 2005
    Location
    Estonia
    Posts
    2,318

    How to use FTP?

    How can I access FTP with winsock.
    Can you give me a link with some examples or where I can find the functions in MSDN.
    Got this far:
    Code:
    #include <windows.h>
    
    /*  Declare Windows procedure  */
    LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
    WSADATA wsaData;
    SOCKET m_socket;
    SOCKET AcceptSocket;
    sockaddr_in service;
    sockaddr_in clientService;
    int iResult;
    /*  Make the class name into a global variable  */
    char szClassName[ ] = "WindowsApp";
    
    int WINAPI WinMain (HINSTANCE hThisInstance,
                        HINSTANCE hPrevInstance,
                        LPSTR lpszArgument,
                        int nFunsterStil)
    
    {
        HWND hwnd;               /* This is the handle for our window */
        MSG messages;            /* Here messages to the application are saved */
        WNDCLASSEX wincl;        /* Data structure for the windowclass */
    
        /* The Window structure */
        wincl.hInstance = hThisInstance;
        wincl.lpszClassName = szClassName;
        wincl.lpfnWndProc = WindowProcedure;      /* This function is called by windows */
        wincl.style = CS_DBLCLKS;                 /* Catch double-clicks */
        wincl.cbSize = sizeof (WNDCLASSEX);
    
        /* Use default icon and mouse-pointer */
        wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
        wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
        wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
        wincl.lpszMenuName = NULL;                 /* No menu */
        wincl.cbClsExtra = 0;                      /* No extra bytes after the window class */
        wincl.cbWndExtra = 0;                      /* structure or the window instance */
        /* Use Windows's default color as the background of the window */
        wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;
    
        /* Register the window class, and if it fails quit the program */
        if (!RegisterClassEx (&wincl))
            return 0;
    
        /* The class is registered, let's create the program*/
        hwnd = CreateWindowEx (
               0,                   /* Extended possibilites for variation */
               szClassName,         /* Classname */
               "Windows App",       /* Title Text */
               WS_OVERLAPPEDWINDOW, /* default window */
               CW_USEDEFAULT,       /* Windows decides the position */
               CW_USEDEFAULT,       /* where the window ends up on the screen */
               544,                 /* The programs width */
               375,                 /* and height in pixels */
               HWND_DESKTOP,        /* The window is a child-window to desktop */
               NULL,                /* No menu */
               hThisInstance,       /* Program Instance handler */
               NULL                 /* No Window Creation data */
               );
    
        /* Make the window visible on the screen */
        ShowWindow (hwnd, nFunsterStil);
    
        /* Run the message loop. It will run until GetMessage() returns 0 */
        while (GetMessage (&messages, NULL, 0, 0))
        {
            /* Translate virtual-key messages into character messages */
            TranslateMessage(&messages);
            /* Send message to WindowProcedure */
            DispatchMessage(&messages);
        }
    
        /* The program return-value is 0 - The value that PostQuitMessage() gave */
        return messages.wParam;
    }
    
    
    /*  This function is called by the Windows function DispatchMessage()  */
    
    LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
        switch (message)                  /* handle the messages */
        {
            case WM_CREATE:
                iResult=WSAStartup(MAKEWORD(2,2),&wsaData);
                if (iResult!=NO_ERROR){
                MessageBox(hwnd,"WSAStartup returned error!","Winsock",MB_OK);
                }
                m_socket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
                if (m_socket==INVALID_SOCKET){
                MessageBox(hwnd,"Invalid socket","Winsock",MB_OK);
                }     
                service.sin_family = AF_INET;
                service.sin_addr.s_addr=inet_addr("127.0.0.1");
                service.sin_port=htons(21);
                if (bind(m_socket,(SOCKADDR*)&service,sizeof(service)) == SOCKET_ERROR){
                MessageBox(hwnd,"Bind socket","Winsock",MB_OK);
                closesocket(m_socket);
                }
                if (listen(m_socket,1)==SOCKET_ERROR){
                MessageBox(hwnd,"Error listening on socket.","Winsock",MB_OK);
                }
                AcceptSocket = SOCKET_ERROR;
                while (AcceptSocket==SOCKET_ERROR) {
                AcceptSocket =accept(m_socket,NULL,NULL);
                }
                MessageBox(hwnd,"Connected","Winsock",MB_OK);
                m_socket = AcceptSocket;
                clientService.sin_family =AF_INET;
                clientService.sin_addr.s_addr=inet_addr("195.222.29.64");
                clientService.sin_port=htons(21);
    }
    
                break;
            case WM_DESTROY:
                PostQuitMessage (0);       /* send a WM_QUIT to the message queue */
                break;
            case WM_COMMAND:
                switch(wParam){
                case 12345:
                    break;
                }
                break;
            default:                      /* for messages that we don't deal with */
                return DefWindowProc (hwnd, message, wParam, lParam);
        }
    
        return 0;
    }
    But the AcceptSocket loop is infinite...
    Last edited by maxorator; 11-04-2005 at 10:34 AM.

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. How to program in unix
    By Cpro in forum Linux Programming
    Replies: 21
    Last Post: 02-12-2008, 10:54 AM
  2. FTP problems...
    By gcn_zelda in forum Tech Board
    Replies: 9
    Last Post: 08-03-2004, 11:05 PM
  3. FTP and Ident Server :: Winsock
    By kuphryn in forum Networking/Device Communication
    Replies: 2
    Last Post: 03-13-2004, 08:16 PM
  4. [C++] FTP client problem (winsock)
    By Niekie in forum Networking/Device Communication
    Replies: 2
    Last Post: 10-19-2003, 09:23 AM
  5. FTP Server :: Winsock
    By kuphryn in forum Windows Programming
    Replies: 2
    Last Post: 10-03-2002, 07:14 PM