当前位置: 首页 > news >正文

网站的功能建设方案神农架网站建设

网站的功能建设方案,神农架网站建设,网络营销知名企业,统计局网站建设情况FTP#xff08;文件传输协议#xff09;是一种用于在网络上传输文件的标准协议。它属于因特网标准化的协议族之一#xff0c;为文件的上传、下载和文件管理提供了一种标准化的方法#xff0c;在Windows系统中操作FTP上传下载可以使用WinINet库#xff0c;WinINet#xff…FTP文件传输协议是一种用于在网络上传输文件的标准协议。它属于因特网标准化的协议族之一为文件的上传、下载和文件管理提供了一种标准化的方法在Windows系统中操作FTP上传下载可以使用WinINet库WinINetWindows Internet库是 Windows 操作系统中的一个网络 API 库用于访问 Internet 上的资源。它提供了一组函数使开发人员能够创建网络应用程序例如通过 HTTP 协议下载文件发送 HTTP 请求处理 cookie 等本章将通过使用WinInet所提供的接口实现FTP文件上传下载功能使得用户可以通过代码的方式上传或下载文件与FTP服务器交互。 首先读者需要自行搭建FTP服务器这里可以使用20CN Mini Ftp这款迷你FTP服务器配置好信息之后运行即可 服务器下载地址https://download.csdn.net/download/lyshark_csdn/88583789 接着来介绍实现FTP通信的标准API函数信息其核心的函数如下所示 InternetOpen 函数用于初始化 WinINet 库返回一个句柄该句柄可用于后续的网络操作。以下是该函数的原型和简要说明 HINTERNET InternetOpen(LPCWSTR lpszAgent, // 用户代理字符串标识应用程序的名称DWORD dwAccessType, // 访问类型可以是 DIRECT、PRECONFIG 或 PROXYLPCWSTR lpszProxyName, // 代理服务器名称LPCWSTR lpszProxyBypass, // 代理服务器的绕过列表DWORD dwFlags // 一些标志例如INTERNET_FLAG_ASYNC异步操作 );lpszAgent: 用户代理字符串用于标识应用程序的名称。可以是应用程序的名称或标识符。dwAccessType: 访问类型指定应用程序的访问权限。可以是以下值之一 INTERNET_OPEN_TYPE_DIRECT: 直接访问互联网。INTERNET_OPEN_TYPE_PRECONFIG: 使用系统配置的代理。INTERNET_OPEN_TYPE_PROXY: 使用指定的代理。 lpszProxyName: 代理服务器的名称仅在 dwAccessType 为 INTERNET_OPEN_TYPE_PROXY 时使用。lpszProxyBypass: 代理服务器的绕过列表仅在 dwAccessType 为 INTERNET_OPEN_TYPE_PROXY 时使用。dwFlags: 一些标志用于指定其他选项例如 INTERNET_FLAG_ASYNC 表示执行异步操作。 该函数返回一个 HINTERNET 句柄用于后续的网络操作。如果操作失败返回 NULL。在使用完 HINTERNET 句柄后应该使用 InternetCloseHandle 函数关闭该句柄。 InternetConnect 函数用于创建一个与指定服务器的连接。以下是该函数的原型和简要说明 HINTERNET InternetConnect(HINTERNET hInternet, // InternetOpen 返回的句柄LPCWSTR lpszServerName, // 服务器的主机名INTERNET_PORT nServerPort, // 服务器的端口号LPCWSTR lpszUsername, // 用户名LPCWSTR lpszPassword, // 密码DWORD dwService, // 服务类型例如 INTERNET_SERVICE_HTTPDWORD dwFlags, // 一些标志例如 INTERNET_FLAG_RELOADDWORD_PTR dwContext // 应用程序定义的上下文 );hInternet: 由 InternetOpen 返回的句柄表示与 WinINet 库的连接。lpszServerName: 服务器的主机名或 IP 地址。nServerPort: 服务器的端口号。lpszUsername: 连接需要的用户名。lpszPassword: 连接需要的密码。dwService: 服务类型可以是以下值之一 INTERNET_SERVICE_FTP: FTP 服务INTERNET_SERVICE_HTTP: HTTP 服务其他服务类型具体可查阅官方文档。 dwFlags: 一些标志例如 INTERNET_FLAG_RELOAD 表示重新加载页面。dwContext: 应用程序定义的上下文可以是一个指针。 该函数返回一个 HINTERNET 句柄用于后续的网络操作。如果操作失败返回 NULL。在使用完 HINTERNET 句柄后应该使用 InternetCloseHandle 函数关闭该句柄。 InternetWriteFile 函数用于向已打开的互联网文件或句柄写入数据。以下是该函数的原型和简要说明 BOOL InternetWriteFile(HINTERNET hFile, // 由 InternetOpenUrl 或 HttpOpenRequest 返回的文件句柄LPCVOID lpBuffer, // 指向包含要写入的数据的缓冲区的指针DWORD dwNumberOfBytesToWrite, // 要写入的字节数LPDWORD lpdwNumberOfBytesWritten // 指向接收实际写入的字节数的指针 );hFile: 由 InternetOpenUrl 或 HttpOpenRequest 返回的文件句柄。lpBuffer: 指向包含要写入的数据的缓冲区的指针。dwNumberOfBytesToWrite: 要写入的字节数。lpdwNumberOfBytesWritten: 指向接收实际写入的字节数的指针。 该函数返回一个布尔值指示操作是否成功。如果成功返回 TRUE否则返回 FALSE。 InternetReadFile 函数用于从已打开的互联网文件或句柄读取数据。以下是该函数的原型和简要说明 BOOL InternetReadFile(HINTERNET hFile, // 由 InternetOpenUrl 或 HttpOpenRequest 返回的文件句柄LPVOID lpBuffer, // 指向接收数据的缓冲区的指针DWORD dwNumberOfBytesToRead, // 要读取的字节数LPDWORD lpdwNumberOfBytesRead // 指向接收实际读取的字节数的指针 );hFile: 由 InternetOpenUrl 或 HttpOpenRequest 返回的文件句柄。lpBuffer: 指向接收数据的缓冲区的指针。dwNumberOfBytesToRead: 要读取的字节数。lpdwNumberOfBytesRead: 指向接收实际读取的字节数的指针。 该函数返回一个布尔值指示操作是否成功。如果成功返回 TRUE否则返回 FALSE。 FTP文件下载 如下代码是使用 WinInet 库实现的 FTP 文件下载功能。以下是对该代码的概述 头文件引入和库链接 代码使用了 Windows.h 和 WinInet.h 头文件同时通过 #pragma comment(lib, WinInet.lib) 链接了 WinInet 库这是使用 WinInet 库的基本准备工作。 FtpSaveToFile 函数 该函数用于将数据保存到本地文件。它通过调用 CreateFile 创建一个空文件然后使用 WriteFile 将数据写入文件最后关闭文件句柄。这个函数在 FTP 文件下载后保存文件到本地。 FTPDownload 函数 这是主要的 FTP 下载函数。它使用 WinInet 提供的函数建立了一个 FTP 会话连接到指定的 FTP 服务器打开指定路径的文件并通过循环调用 InternetReadFile 读取文件内容。下载的数据以字节数组的形式保存在 pDownloadData 中下载完成后调用 FtpSaveToFile 函数将数据保存到本地文件。 注意事项 代码中使用了 RtlZeroMemory 函数清空内存确保数据缓冲区的正确初始化。注意释放动态分配的内存避免内存泄漏。 函数参数 函数参数包括 FTP 服务器的主机名 (szHostName)、用户名 (szUserName)、密码 (szPassword)、FTP 路径 (szUrlPath)以及本地保存路径 (SavePath)。 总体而言这段代码实现了基本的 FTP 文件下载功能适用于从 FTP 服务器下载文件到本地。在使用时确保提供正确的 FTP 服务器信息和路径以及合适的本地保存路径。 #include iostream #include Windows.h #include WinInet.h#pragma comment(lib, WinInet.lib)// 保存文件到本地 BOOL FtpSaveToFile(char *pszFileName, BYTE *pData, DWORD dwDataSize) {// 创建空文件HANDLE hFile CreateFile(pszFileName, GENERIC_READ | GENERIC_WRITE,FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, CREATE_ALWAYS,FILE_ATTRIBUTE_ARCHIVE, NULL);if (INVALID_HANDLE_VALUE hFile)return FALSE;DWORD dwRet 0;// 写出数据到文件WriteFile(hFile, pData, dwDataSize, dwRet, NULL);// 关闭句柄CloseHandle(hFile);return TRUE; }BOOL FTPDownload(char *szHostName, char *szUserName, char *szPassword, char *szUrlPath, char *SavePath) {HINTERNET hInternet, hConnect, hFTPFile NULL;BYTE *pDownloadData NULL;DWORD dwDownloadDataSize 0;DWORD dwBufferSize 4096;BYTE *pBuf NULL;DWORD dwBytesReturn 0;DWORD dwOffset 0;BOOL bRet FALSE;// 建立会话并打开FTP操作hInternet InternetOpen(WinInet Ftp, INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);hConnect InternetConnect(hInternet, szHostName, INTERNET_INVALID_PORT_NUMBER,szUserName, szPassword, INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, 0);hFTPFile FtpOpenFile(hConnect, szUrlPath, GENERIC_READ, FTP_TRANSFER_TYPE_BINARY | INTERNET_FLAG_RELOAD, NULL);// 获取文件大小并初始化缓冲区dwDownloadDataSize FtpGetFileSize(hFTPFile, NULL);pDownloadData new BYTE[dwDownloadDataSize];RtlZeroMemory(pDownloadData, dwDownloadDataSize);pBuf new BYTE[dwBufferSize];RtlZeroMemory(pBuf, dwBufferSize);// 循环接收数据do{// 读取数据bRet InternetReadFile(hFTPFile, pBuf, dwBufferSize, dwBytesReturn);if (FALSE bRet)break;// 将读取到的数据追加到内存RtlCopyMemory((pDownloadData dwOffset), pBuf, dwBytesReturn);dwOffset dwOffset dwBytesReturn;} while (dwDownloadDataSize dwOffset);// 保存变量中的数据为文件FtpSaveToFile(SavePath, pDownloadData, dwDownloadDataSize);// 释放内存delete[]pDownloadData;pDownloadData NULL;return TRUE; }调用FTPDownload时分别传入参数参数1是IP地址参数2是FTP登录用户名参数3是FTP登录密码参数4是服务器端根目录下的文件参数5是下载文件到本地的路径函数执行结束后返回一个BOOL状态值。 int main(int argc, char * argv[]) {BOOL bRET FTPDownload(127.0.0.1, admin, admin, /lyshark.jpg, d://newtest/lyshark.jpg);if (bRET TRUE){printf(已下载文件 \n);}else{printf(下载失败 \n);}system(pause);return 0; }运行后则可以将服务器端上的/lyshark.jpg下载到本地的d://newtest/lyshark.jpg目录下如下图所示 FTP文件上传 如下代码使用 WinInet 库实现了 FTP 文件上传操作。以下是对该代码的概述 函数功能 该代码实现了 FTP 文件上传操作将本地文件上传到指定的 FTP 服务器路径。 函数参数 函数参数包括 FTP 服务器的主机名 (szHostName)、用户名 (szUserName)、密码 (szPassword)、FTP 路径 (szUrlPath)以及本地文件路径 (FilePath)。 建立会话和连接 使用 InternetOpen 函数建立一个 WinInet 会话然后使用 InternetConnect 函数建立到 FTP 服务器的连接。 打开 FTP 文件 使用 FtpOpenFile 函数打开指定路径的 FTP 文件。如果文件不存在将创建一个新文件。文件以二进制传输方式打开并且具有重新加载标志。 打开本地文件 使用 CreateFile 函数打开本地文件。如果本地文件不存在将返回 INVALID_HANDLE_VALUE。 获取文件大小和读取文件数据 通过 GetFileSize 获取本地文件大小然后根据文件大小动态分配内存并使用 ReadFile 读取文件数据到内存中。 上传数据 使用 InternetWriteFile 函数将内存中的文件数据上传到 FTP 服务器。上传成功后释放内存上传失败则返回 FALSE。 注意事项 确保提供正确的 FTP 服务器信息和路径以及本地文件路径。释放动态分配的内存避免内存泄漏。处理上传失败的情况可能需要添加适当的错误处理代码。 总体而言这段代码实现了基本的 FTP 文件上传功能适用于将本地文件上传到 FTP 服务器。在使用时注意提供正确的参数和处理可能出现的错误。 #include iostream #include Windows.h #include WinInet.h#pragma comment(lib, WinInet.lib)// 实现文件上传操作 BOOL FTPUpload(char *szHostName, char *szUserName, char *szPassword, char *szUrlPath, char *FilePath) {HINTERNET hInternet, hConnect, hFTPFile NULL;DWORD dwBytesReturn 0;DWORD UploadDataSize 0;BYTE *pUploadData NULL;DWORD dwRet, bRet 0;// 建立会话并打开FTP操作hInternet InternetOpen(WinInet Ftp, INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);hConnect InternetConnect(hInternet, szHostName, INTERNET_INVALID_PORT_NUMBER, szUserName, szPassword, INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, 0);hFTPFile FtpOpenFile(hConnect, szUrlPath, GENERIC_WRITE, FTP_TRANSFER_TYPE_BINARY | INTERNET_FLAG_RELOAD, NULL);// 打开文件HANDLE hFile CreateFile(FilePath, GENERIC_READ | GENERIC_WRITE,FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING,FILE_ATTRIBUTE_ARCHIVE, NULL);if (INVALID_HANDLE_VALUE hFile)return FALSE;// 获取文件大小UploadDataSize GetFileSize(hFile, NULL);pUploadData new BYTE[UploadDataSize];// 读取文件到缓冲区ReadFile(hFile, pUploadData, UploadDataSize, dwRet, NULL);UploadDataSize dwRet;// 开始上传数据bRet InternetWriteFile(hFTPFile, pUploadData, UploadDataSize, dwBytesReturn);if (FALSE bRet){delete[]pUploadData;return FALSE;}delete[]pUploadData;return TRUE; }文件上传与下载一样FTPUpload通过传入服务器地址用户名密码上传后的文件名被上传本地文件路径 int main(int argc, char * argv[]) {BOOL bRET FTPUpload(127.0.0.1, admin, admin, /abc.exe, c://nc.exe);if (bRET TRUE){printf(已上传文件 \n);}else{printf(上传失败 \n);}system(pause);return 0; }上传成功后输出如下图所示
http://www.dnsts.com.cn/news/57240.html

相关文章:

  • 保定建设信息网站整合营销传播的概念
  • 英文网站制作 官网网站打开空白页面
  • 浙江建设厅网站如何做好外贸网络营销
  • 贵阳拍卖网站开发公司怎么免费建立个人网站
  • 装修网站模板12免费建站网站
  • 网站开发代理江苏wordpress自建主题
  • 济宁专业网站建设wordpress 演示数据
  • 网站怎么管理维护电商常用的erp系统有哪些
  • 001做淘宝代码的网站如何创建wordpress
  • 博客网站开发报告文库网站建设用户画像例子
  • 一键建网站在国内怎么做国外网站
  • 网站视频上传怎么做2021年简短新闻20字
  • 怎样自己免费建设一个网站无锡机关单位建设网站
  • 海沧区建设局网站市政处有没有做家纺类的网站
  • 江西省工程建设网站网站开发php和c语言区别
  • 防做网站视频深圳食品网站建设
  • 南昌市建设网站wordpress 集赞系统
  • 西安高端模板建站网站举报多久有结果
  • 做网站图片软件网站做支付需要准备什么东西吗
  • 免费建企业网站哪个好计算机前景和就业
  • 做网站推荐源创网络网站开发项目进度安排
  • 吴江建设银行网站高清素材网站无水印
  • 河南经贸一站式服务平台建设厅网站密码忘了怎么办
  • 玉儿做春梦网站西安网站建设咪豆
  • 网站怎么维护可以做外国网站文章
  • aspx做网站做网站分析
  • 建设网站可以搜索电影长春个人网站制作公司
  • php做网站半成品东莞网页制作价格
  • 软件开发 网站开发哪个难想学营销策划去哪里学
  • 茂名专业网站建设公司wordpress mysql重启