2015-12-14 404 views
0

大家好,晚上好,错误12003 FTP文件上传错误

这是以FTP为中心文件上传使用C++。我一直在试图上传一个FTP文件,我得到错误12003一直在网上搜索,我没有看到任何有用的..似乎令人讨厌。

我的代码看起来像这样

#include <stdio.h> 
#include <stdlib.h> 
#include <windows.h> 
#include <wininet.h> 

#pragma comment (lib, "wininet.lib") 

int main() 
{ 
    HINTERNET hInternet; 
    HINTERNET hFtpSession; 

    hInternet = InternetOpen(NULL, INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0); 
    if(!hInternet) 
    { 
     printf("Error : %d\n",GetLastError()); 
    } 

    hFtpSession = InternetConnect(hInternet, "myohyip8.5gbfree.com", INTERNET_DEFAULT_FTP_PORT, "myohyip8", "WxqHjNGv", INTERNET_SERVICE_FTP, 0, 0); 

    if(!hFtpSession) 
    { 
     printf("Error : %d\n",GetLastError()); 
    } 

    if (!FtpPutFile(hFtpSession, "C:\\ivan.txt", "myivan.txt", FTP_TRANSFER_TYPE_BINARY, 0)) 
       { 
        printf("Error : %d\n", GetLastError()); 
       } 
     else{ 
      printf("File Upload Successful :)\n"); 
      } 
     InternetCloseHandle(hFtpSession); 
     InternetCloseHandle(hInternet); 

     system("PAUSE"); 
    return 0; 
} 

这已经让我担心,我没有在什么地方,从这里走一个想法,在我看来,像一个文件系统错误。

回答

2

我在解决ftp问题时做的第一件事就是尝试获取一个正常的ftp程序(例如filezilla或其他)来连接并在同一台机器上执行相同的操作。如果可以连接,您将能够在该软件中看到服务器对话的日志,这将为您提供良好的参数。如果您无法连接,您会在同一个日志中看到问题可能是什么。

没有使用这样的软件可以肯定,我最好的猜测是尝试以常规模式连接时出现问题,并且应该处于被动状态(本质上是防火墙问题)。您可以在InternetConnect呼叫的第二个参数中传递INTERNET_FLAG_PASSIVE。这将切换到被动模式。

例如

hFtpSession = InternetConnect(hInternet, "myohyip8.5gbfree.com", INTERNET_DEFAULT_FTP_PORT, "myohyip8", "WxqHjNGv", INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, 0); 
+0

是它在被动模式。从我在CoreFTP –

+0

这里看到的coreFTP工作如此?如果是的话添加标志修复问题? –

+0

是的,它确实:)再次感谢 –