WinInet中的FTP操作

摘要:
在项目设置方面,Wininet。h和Wininet必须添加所有库。为简单起见,请使用同步模式:HINTERNEThInstance;HINTERNEThConnect;hInstance=InternetOpen;如果{return;}hConnect=互联网连接;如果{InternetCloseHandle;hInstance=NULL;return;}如果hConnect返回非空值,则连接成功。hConnect句柄非常有用。您可以通过FtpFindFirstFile和InternetFindNextFile:WIN32_FIND_DATAfd遍历目录和文件;HINTERNEThFind=FtpFindFirstFile;如果(hFind!=INVALID_HANDLE_VALUE){BOOLbFind=TRUE;而{bFind=InternetFindNextFile;}}InternetCloseHandle;在上面的代码中,L“/”表示根目录。请注意,目录由反斜杠分隔。fd参数中包含目录和文件名。如果要操作文件,可以使用FtpFileOpen。此函数返回的句柄可用于InternetReadFile、InternetReadFileEx、InternetWrite和InternetSetFilePointer等函数。手柄使用InternetCloseHandle关闭。Wininet库还提供了一些其他ftp操作函数,这些函数比较容易学习。

研究了一下Wininet在ftp中的应用,感觉比http应用要简单些。

项目设置方面,Wininet.h和Wininet.lib都必须加入。

假设ftp地址为10.1.1.1,账号和密码都为hello。

为简单起见,使用同步模式:

HINTERNET hInstance;
HINTERNET hConnect;
hInstance = InternetOpen(L"ftptest",
                        INTERNET_OPEN_TYPE_DIRECT,
                        NULL,
                        NULL,
                        0);

if(hInstance == NULL)
{
 return;
}

hConnect = InternetConnect(hInstance,
             L"10.1.1.1",              //服务器地址
      INTERNET_DEFAULT_FTP_PORT,    //端口号 21
      L"hello",                    //账号
      L"hello",                    //密码
      INTERNET_SERVICE_FTP,
      0,
      0);

if(hConnect == NULL)
{
 InternetCloseHandle(hInstance);

 hInstance = NULL;

 return;
}

如果hConnect返回非空,则表示连接成功了。

hConnect句柄就非常有用了,可以通过FtpFindFirstFile和InternetFindNextFile来遍历目录和文件:
WIN32_FIND_DATA fd;
HINTERNET hFind = FtpFindFirstFile(g_hConnect, L"/*.*", &fd, INTERNET_FLAG_RELOAD, 0);
if(hFind != INVALID_HANDLE_VALUE)
{
 BOOL bFind = TRUE;

 while(bFind)
 {
  bFind = InternetFindNextFile(hFind, &fd);
 }
}

InternetCloseHandle(hFind);
上面代码里面L"/"表示根目录,注意目录都是以反斜杠来划分的。目录和文件名都包含在fd参数里。

如果要操作某个文件,可以使用FtpFileOpen,此函数返回的句柄,可用于InternetReadFile、InternetReadFileEx、InternetWrite和

InternetSetFilePointer等函数,句柄用InternetCloseHandle来关闭。

如果要从服务器复制一个文件到本地,则可使用一个更方便的函数FtpGetFile。而要上传一个文件,则使用FtpPutFile。

Wininet库还提供了其他一些ftp操作函数,研究起来也比较简单。

免责声明:文章转载自《WinInet中的FTP操作》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇linux下卸载apache方法小结.NET Core 控制台应用生成exe文件下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

转 在shell脚本中使用expect实现scp传输问题

1.安装expect expect用于shell脚本中自动交互,其是基于tcl编程语言的工具。所以安装expect首先安装tcl。本文中使用的是expect5.45和tcl8.6.6。 安装tcl [root@tseg0 /]$ mkdir /tools [root@tseg0 /]$ tar -zxvf tcl8.6.6-src.tar.gz [roo...

swoole学习--图文直播和聊天室

其实这个也没有什么好值得记录的,但是前面都记下来了,我也顺便说说吧: 1.为了方便,最好把http服务声明为超全局变量。 2.在一些地方里面,你声明的http超全局变量是用不了的,你只能用他自己内置的服务对象: public function pushLive($da, $serv) { $key = 'live_game_key'...

Ubuntu ftp服务器搭建 + UltraEdit编辑FTP文件

0. 前言:(请无视) 最近在写一个Linux脚本,在电脑装了Ubuntu的虚拟机来测试脚本效果;可是用vim编辑脚本实在是太蛋疼,于是就想到UltraEdit编写,然后通过ftp上传到Ubuntu虚拟机中...... 一、Ubuntu 搭建ftp 服务器 1. vsftpd 服务安装 在虚拟机能联网的情况下很简单,就一条命令,然后等结果就好了,没联网我也...

如何在ftp线上改代码?(本地没有项目文件)(老大:张国辉)

接到任务,说要改一下样式之类的,,,等半天你倒是给项目文件我呀,发个ftp账号密码就完事啦。。。 饿,  听说可以线上直接编辑改,不用本地传项目,好吧,我 low 行了吧。开干吧。 第一步:链接ftp,(注意:网站名称一定要用网站名称,不要乱起名,以防下次忘记是什么网站了。国辉又要敲黑板啦!) 2,链接好了之后,右键文件选择编辑。 我遇到了问题:编辑不了...

PHP ftp_chmod() 函数

定义和用法 ftp_chmod() 函数设置 FTP 服务器上指定文件的权限。 如果成功,该函数返回新的权限。如果失败,则返回 FALSE 和一个警告。 语法 ftp_chmod(ftp_connection,mode,file) 参数 描述 ftp_connection 必需。规定要使用的 FTP 连接。 mode 必需。规定新的权限。 mo...

Linux进程间通信(1):管道

接上一篇的内容——Linux任务、进程和线程 参考书籍:《从实践中学嵌入式linux应用程序开发》(华清远见嵌入式学院) 资料下载:http://download.csdn.net/detail/klcf0220/5332477 参考链接:http://www.cnblogs.com/zhouyinhui/archive/2010/10/13/184920...