首页 > 编程语言 >c++ ftp上传下载

c++ ftp上传下载

时间:2023-10-31 09:33:41浏览次数:31  
标签:ftp FTP 上传下载 INTERNET c++ hConnect printf NULL hInternet

#include <afxinet.h>

int main()
{
BOOL dRes,pRes;
HINTERNET hInternet;
HINTERNET hConnect;

hInternet = InternetOpen("A3GS Sample", INTERNET_OPEN_TYPE_DIRECT,NULL, NULL, INTERNET_FLAG_NO_CACHE_WRITE);

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

hConnect = InternetConnect(hInternet, "192.168.1.225"/*FTP服务器地址*/, INTERNET_DEFAULT_FTP_PORT/*FTP端口号,此为默认值---21*/,"admin"/*用户名*/, "admin"/*密码*/, INTERNET_SERVICE_FTP, INTERNET_FLAG_EXISTING_CONNECT || INTERNET_FLAG_PASSIVE,0 );

if ( NULL == hInternet )
{
printf( "InternetConnect Error:%d\n", GetLastError() );
InternetCloseHandle(hInternet);
}

//文件上传
pRes = FtpPutFile(hConnect,"D:\\FTP\\测试文本.txt","./zwh/测试文本.txt",FTP_TRANSFER_TYPE_ASCII,0);

if(pRes==0)
{
printf("上传文件失败!\n");
}
else
{
printf("上传文件成功!\n");
}

//文件下载
dRes = FtpGetFile(hConnect, "./zwh/测试文本.txt", "D:\\FTP\\测试文本副本.txt", FALSE, FILE_ATTRIBUTE_ARCHIVE, FTP_TRANSFER_TYPE_UNKNOWN, 0);
if ( dRes == 0 )
{
printf( "FtpGetFile Error:\n", GetLastError() );
}
else
{
printf( "下载文件成功!\n" );
}

 

InternetCloseHandle(hConnect);
InternetCloseHandle(hInternet);


if(dRes&&pRes)
return true;
else
return false;
}

标签:ftp,FTP,上传下载,INTERNET,c++,hConnect,printf,NULL,hInternet
From: https://www.cnblogs.com/xzh1993/p/17799551.html

相关文章

  • C++基本输入输出
    C++基本输入输出C++标准库提供了一组丰富的输入/输出功能。C++的I/O操作发生在流中,流是字节序列。如果字节流是从设备(如键盘、磁盘驱动器、网络连接等)流向内存,这叫做输入操作。如果字节流是从内流向设备(如显示器、打印机、磁盘驱动器、网络连接等),这叫做输出操作。I/O库头文件......
  • C++多线程——async、packages_task、promise
    异步编程async、future基本概念和使用:异步执行函数:std::async可以异步执行一个函数,这意味着函数将在后台线程中执行,而当前线程可以继续执行其他任务。返回值获取:你可以获得函数的返回值,或者得到一个std::future对象,它允许你在将来的某个时刻获取函数的结果。线程......
  • C++多线程——线程池
    线程池ThreadPool线程池简单来说就是用来管理多个线程的,以避免频繁开辟或销毁线程的情况。以下是创建和使用线程池的基本步骤:创建一个任务队列,用于存储待执行的任务。创建一组线程,这些线程会从任务队列中获取任务并执行它们。将任务提交到任务队列中,由线程池的线程......
  • C++U4-02-贪心算法2
    上节课作业部分  [纪念品分组]  【算法分析】贪心算法:先对数组从小到大排序,用l=1,r=n指针指向首尾元素;如果pl+pr≤w,则将pl和pr分一组,指针l++,r--。如果pl+pr>w,则将pr单独作为一组,指针r--。如此反复直到取完所有元素。#include<iostream>#include<a......
  • C++U5-深度优先搜索-03(记忆化搜索、剪枝和优化)
    ......
  • C++23:多维视图(std::mdspan)
    C++23:多维视图(std::mdspan)介绍在C++23中,std::mdspan是一个非拥有的多维视图,用于表示连续对象序列。这个连续对象序列可以是一个简单的C数组、带有大小的指针、std::array、std::vector或std::string。这种多维视图通常被称为多维数组。多维数组的形状由其维数(也称为秩)和每个......
  • C++中低级内存操作
    C++中低级内存操作C++相较于C有一个巨大的优势,那就是你不需要过多地担心内存管理。如果你使用面向对象的编程方式,你只需要确保每个独立的类都能妥善地管理自己的内存。通过构造和析构,编译器会帮助你管理内存,告诉你什么时候需要进行内存操作。将内存管理隐藏在类中显著提高了可用性,......
  • 排序算法:选择排序,分别用c++、java、python实现
    选择排序介绍选择排序(SelectionSort)是一种简单的比较排序算法,它的工作原理如下:分区:将待排序的数组分成两个部分,一个部分是已排序的子数组,另一个部分是未排序的子数组。初始时,已排序的子数组为空,而未排序的子数组包含整个数组。选择最小值:从未排序的子数组中找到最小(或最大,根据......
  • 算法题:分别用c++/python/java实现回文数
    回文数是一个数字,从左到右和从右到左读都是相同的数字序列。换句话说,回文数在数值上是对称的。一些常见的回文数示例包括:单个数字:例如1、2、3等,它们本身就是回文数,因为它们只有一个数字。两位数:例如11、22、33等,它们也是回文数,因为它们的左右两个数字相同。多位数:例如121、1331、12......
  • 用c++写一个高精度计算的除法运算
    高精度除以低精度以下这段代码的主要作用是将一个大整数(以字符数组形式表示)除以一个整数,并输出结果。具体来说,代码将大整数a1(“1256”)除以整数b(3),并输出商。#include<iostream>#include<cstdio>#include<cstring>usingnamespacestd;intmain(){chara1[100]="1256";......