C语言如何用FtpPutFile()函数上传文件到Ftp服务器!下载用FtpGetFile()可以! 20

 我来答
tattackor
2015-06-10 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:896万
展开全部
  1. C语言中没有FtpPutFile函数,这是VB中的函数。

    C语言可以使用CStdioFile函数打开本地文件。使用类CInternetSession 创建并初始化一个Internet打开FTP服务器文件。

    CStdioFile继承自CFile,一个CStdioFile 对象代表一个用运行时函数fopen 打开的C 运行时流式文件。
    流式文件是被缓冲的,而且可以以文本方式(缺省)或二进制方式打开。文本方式提供对硬回车—换行符对的特殊处理。当你将一个换行符(0x0A)写入一个文本方式的CStdioFile 对象时,字节对(0x0D,0x0A)被发送给该文件。当你读一个文件时,字节对(0x0D,0x0A)被翻译为一个字节(0x0A)。
    CStdioFile 不支持Duplicate,LockRange,和UnlockRange 这几个CFile 函数。如果在CStdioFile 中调用了这几个函数,将会出现CNoSupported 异常。
    使用类CInternetSession 创建并初始化一个或多个同时的Internet 会话。如果需要,还可描述与代理服务器的连接。
    如果Internet连接必须在应用过程中保持着,可创建一个类CWinApp的CInternetSession成员。一旦已建立起Internet 会话,就可调用OpenURL。CInternetSession会通过调用全局函数AfxParseURL来为分析映射URL。无论协议类型如何,CInternetSession 解释URL并管理它。它可处理由URL资源“file://”标志的本地文件的请求。如果传给它的名字是本地文件,OpenURL 将返回一个指向CStdioFile对象的指针。
    如果使用OpenURL在Internet服务器上打开一个URL,你可从此处读取信息。如果要执行定位在服务器上的指定的服务(例如,HTTP,FTP或Gopher)行为,必须与此服务器建立适当的连接。

  2. 例程:

    #include <winsock.h>
    #include <stdio.h>
    WORD wVersionRequested;
    WSADATA wsaData;
    char name[255]; //name里是本机名
    CString ip; //本机IP
    PHOSTENT hostinfo;
    wVersionRequested = MAKEWORD( 1, 1 );
    if ( WSAStartup( wVersionRequested, &wsaData ) == 0 )
    {
    if( gethostname ( name, sizeof(name)) == 0)
      {
    if((hostinfo = gethostbyname(name)) != NULL)
    {
    ip = inet_ntoa (*(struct in_addr *)*hostinfo->h_addr_list);
    }
    }
    WSACleanup( );
    }  
    // AfxMessageBox(name);//name里是本机名
    // AfxMessageBox(ip); //ip中是本机IP
    CStdioFile File;
    File.Open("C://ip.txt",CFile::modeCreate|CFile::modeReadWrite);
    //如果文件事先不存在的话,就需要CFile::modeCreate,否则就不需要。
    File.WriteString(ip+":"+"8000");
    File.Close();  //注意,这里一定要把文件关闭,否则不能成功上传
    CString host="204.45.67.11";  
      CString user="19337";  
      CString password="1234567";  
      TRACE(":%s:%s:%s:%s/n", host,   
    user, password, "C://ip.txt");  
      CInternetSession session  
    (AfxGetApp()->m_pszAppName);  
      CFtpConnection* pConn = NULL;  
      pConn = session.GetFtpConnection (host,user,password);  
      if (pConn) {  
    if (!pConn->PutFile("C://ip.txt","ip.txt"))
    {  
    MessageBox("传送文件失败??");  
    } else {  
    MessageBox("传送文件成功!");  
    }  
    pConn->Close();  
    delete pConn;  
    session.Close();  
      } else {  
    MessageBox("Cannot Connect");  
      }
zcy990718
2013-05-16 · TA获得超过1.2万个赞
知道大有可为答主
回答量:1.2万
采纳率:66%
帮助的人:1550万
展开全部
  1. 先后使用InternetOpen和InternetConnect打开连接。
  2. 使用CreateFile函数打开本地文件。
  3. 使用FtpOpenFile函数打开远程文件。
  4. 分别使用InternetReadFile和ReadFile函数读取 FTP 或本地文件。
  5. 分别使用InternetWriteFile和WriteFile函数写入 FTP 或本地文件。
  6. 使用CloseHandle函数关闭本地文件句柄。
  7. 使用InternetCloseHandle函数关闭 FTP 文件句柄。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
珺伴伴I
2013-05-16 · TA获得超过337个赞
知道小有建树答主
回答量:438
采纳率:0%
帮助的人:299万
展开全部
直接调用这个接口啊
编译时加wininet.lib这个库
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式