WinInet
wininet.dll用法
wininet.dll用法wininet.dll是Windows操作系统中的一个动态链接库,它提供了一系列用于网络通信的函数和接口。
这个库包含了许多功能,包括HTTP、FTP、SSL、代理服务器、Cookie管理等,可以用来进行网络通信、数据传输和网络资源访问。
下面我会从几个方面来介绍wininet.dll的用法。
首先,wininet.dll可以用于创建和管理HTTP请求。
它提供了一系列函数,比如HttpOpenRequest、HttpSendRequest等,可以用来建立HTTP连接、发送HTTP请求并获取服务器响应。
这些函数可以被用于开发各种网络应用程序,比如网页浏览器、网络爬虫等。
其次,wininet.dll还提供了FTP相关的功能。
通过调用其中的函数,比如FtpOpenFile、FtpPutFile、FtpGetFile等,可以实现FTP客户端的功能,用于上传、下载文件到FTP服务器。
此外,wininet.dll还包含了与代理服务器和安全连接相关的函数。
它可以用来设置代理服务器、处理SSL连接、管理Cookie等,这些功能对于网络通信的安全性和稳定性非常重要。
另外,wininet.dll还提供了对缓存的管理功能,可以用来控制和管理网络数据的缓存,提高网络数据的访问效率。
总的来说,wininet.dll是一个非常重要的网络通信库,它提供了丰富的功能和接口,可以帮助开发者实现各种网络通信相关的功能。
在使用时,需要注意合理使用这些函数,处理好网络通信中可能出现的各种异常情况,确保程序的稳定性和安全性。
希望以上信息能够帮助你更好地了解wininet.dll的用法。
使用WinInet访问没有证书的Https (GETPOST)
#include <Wininet.h>
#include <stdio.h>
#pragma comment(lib,"wininet.lib")
#define TRANSFER_SIZE 1024
int main()
{
int nRet = 1;
LPCTSTR lpszAgent = "WinInetGet/0.1";
HINTERNET hInternet = InternetOpen(lpszAgent, INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
}
szBuff[dwBytesRead] = '/0';
printf("%s/n", szBuff);
nRet = 0;
GOTO_EXIT:
if( hRequest ) {
InternetCloseHandle(hRequest);
{
DWORD dwFlags;
DWORD dwBuffLen = sizeof(dwFlags);
InternetQueryOption (hRequest, INTERNET_OPTION_SECURITY_FLAGS, (LPVOID)&dwFlags, &dwBuffLad;
bResult = InternetReadFile(hRequest, szBuff, dwBytesAvailable, &dwBytesRead);
if( ! bResult ) {
Windows网络编程复习重点
Windows⽹络编程复习重点⽬录第⼀章⽹络应⽤程序设计基础 (3)分布式⽹络应⽤程序的特点及分类 (3)⾯向应⽤的⽹络编程⽅法(3点) (3)基于TCP/IP的⽹络编程⽅法 (3)⾯向原始帧的⽹络编程⽅法(4种) (4)第⼆章⽹络程序通信模型 (4)常见的⽹络编程通信模型 (4)客户端、服务器的⼯作过程 (4)P2P模型的特点及其⽹络的拓扑结构 (5)第三章⽹络数据的内容与形态 (6)⽹络字节顺序与主机字节顺序 (6)⽹络字节顺序与主机字节顺序转换的函数 (6)⽹络数据传输形态 (6)字符编码 (7)数据校验 (7)第四章软件协议接⼝ (7)协议软件接⼝的位置与功能 (7)WinSock DLL的初始化与释放 (8)WinSock的地址描述 (9)套接字选项和IO控制命令 (9)处理WinSock的错误 (9)第五章流式套按字编程 (9)流式套接字通信的特点 (9)流式套接字的适⽤场景 (10)基本函数 (10)流式套接字编程的⼀般过程 (12)正确处理流数据的接收 (13)接收定长和变长数据 (13)流式套接字的编程实例 (13)第六章数据报套接字编程 (21)数据报套接字数据通信的特点 (21)数据报套接字的适⽤场景 (21)数据报套接字的编程的⼀般过程 (21)数据报套接字的常⽤函数 (22)数据报套接字的编程实例 (22)第七章原始套接字编程 (27)原始套接字的特点 (27)原始套接字的适⽤场景 (28)原始套按字的编程的⼀般过程 (28)原始套接字的编程实例 (28)第⼋章⽹络通信中的IO操作 (37)套接字的常见IO模式 (37)同步、异步、阻塞、⾮阻塞的概念及区别 (37)阻塞IO模型的⼯作原理与特点 (38)⾮阻塞IO模型的⼯作原理与特点 (38)IO复⽤模型的⼯作原理与特点(选择模型) (38)异步IO复⽤模型的⼯作原理与特点(WSAAsynsSelect) (38)完成端⼝模型的⼯作原理与特点(异步) (39)第九章WinPcap编程 (39)Wpcap.dll的⼯作流程 (39)Wpcap.dll的编程实例 (40)Packet.dll的⼯作流程 (45)Packet.dll编程实例 (45)第⼀章⽹络应⽤程序设计基础分布式⽹络应⽤程序的特点及分类1、特点:3点A)分布式⽹络应⽤程序将整个应⽤程序的处理分成⼏个部分,分别在不同的机器上运⾏,这⾥的“分布”包含两层含义:地理上的分布和数据处理的分布。
第6章 WinInet编程
第6章 WinInet编程 章 编程
WinInet开发包的两种形式: WinInet开发包的两种形式: 开发包的两种形式 API包含一个 包含一个C WinInet API包含一个C语言的函数集 WinInet类层次则是对前者的面向对象的封 MFC WinInet类层次则是对前者的面向对象的封 装
6.1.4 关于返回信息的缓冲区参数。
通过缓冲区返回信息: 通过缓冲区返回信息: 许多WinInet API函数使用两个参数来向应用程序 许多WinInet API函数使用两个参数来向应用程序 返回信息。 返回信息。lpszBuffer 是指向数据缓冲区的指针可以 为NULL。lpdwBufferLength 是指向缓冲区长度的指针 NULL。 (LPDWORD lpdwBufferLength ),它在函数开始执行时 ), 指示缓冲区的大小,不能为NULL。 指示缓冲区的大小,不能为NULL。 NULL
6.1.1 WinInet API的HINTERNET句柄 的 句柄
HINTERENT: : HINTERNET句柄是一种特殊的数据类型 句柄是一种特殊的数据类型, HINTERNET句柄是一种特殊的数据类型,是由少数 API函数创建的 大多数WinInet API函数通 函数创建的, WinInet API函数创建的,大多数WinInet API函数通 过使用HINTERNET类型的句柄来实现它的操作。 HINTERNET类型的句柄来实现它的操作 过使用HINTERNET类型的句柄来实现它的操作。 它跟其他的Win32 Handle很类似 很类似, 它跟其他的Win32 Handle很类似,但是不能够跟其 他类型的Win32 Handle相互交换使用 相互交换使用。 他类型的Win32 Handle相互交换使用。而各个函数返 回的HINTERNET处于一个树型结构中。 HINTERNET处于一个树型结构中 回的HINTERNET处于一个树型结构中。
自考网络应用程序设计题库答案
选择题(1) UDP可以提供的端口数是65535(2) 根据TCP或UDP端口的分配规则,端口254保留给特定的服务3) 保留给其他服务的端口是2564) 在Internet 中,用三元组标识一个应用层进程。
这种三元组,指的是传输层协议,主机的IP 地址,传输层的端口号5) 在Internet 中,可以标识一个完整的网间通信的是传输层协议,本地机IP 地址,本地机传输层端口,远地机IP 地址,远地机传输层端口6) 规定纯文本电子邮件信件的格式的是RFC8227) 接收电子邮件的邮局协议是POP38) 因特网上使用最多的一种应用是email(9) SMTP命令的一般的格式命令关键字参数<CRLF>(10) SMTP客户问候SMTP服务器命令格式是HELO发送方的主机名<CRLF>(11) 写信字段的格式是MAIL FROM发信人的电子邮件地址<CRLF>12) 请求发送邮件内容命令格式:DATA <CRLF>13) 空操作命令格式:NOOP <CRLF>14) 系统状态或系统帮助应答码字是21115) 帮助信息的码字是21416) 服务器关闭传输通道码字是221 (17)网易的SMTP服务器的域名是18) 规定电子邮件信件内容结构的标准是RFC82219) 信头字段包括四部分,第一部分是字段名20) 信头字段的结构包括字段折叠21) 发送者对发送的发送格式是Sender:mailbox <CRLF>22) Win32 操作系统下支持多进程多线程机制23) 阻塞套接字的I/O 操作调用、等待、返回24) 套接字I/O 模型,种类数是525) 不是图形界面的操作系统有DOS(26) —般C程序中的Main或Win Ma in函数是主线程27) Win32 操作系统中可调度的最小的执行单位线程28) 为程序员提供了Windows 应用程序的集成开发环境的是vc++29) 线程分的种类数是2(30)在MFC应用程序中,所有的线程是CWinThread对象31) 适用于处理那些不要求用户输入并且比较消耗时间的其他任务的是工作线程32) 一个工作线程对应一个控制函数33) 创建并启动工作线程的函数AfxBeginThread34) 用户界面窗口类,包括窗口,对话框(35) AfxBegi nThread(函数的第一个参数是pThreadClass36) Windows Internet 扩展应用程序高级编程接口WInternet(37) 利用MFC Winlnet类来编写In ternet应用程序还具的优点支持Web代理服务器访问(38) 封装了HINTERNE哙话根句柄的是ClnternetSession类39) 文件类包括CInternetFile 类40) 代表MFC WinInet 类的成员函数在执行时所发生的错误或异常的是Cln ternetFile类(41) 使用Winlnet类编程的步骤包括创建ClnternetSession类对象,创建并初始化lnternet 会话(42) 如果需要使用异步操作模式,可以重载On StatusCallback函数(43) MFC提供的套接字类是Win dows Socket API(44) CSocke类派生于CAsyncSocke类45) 管理通信的是CSocketFile(46) afxSock.h的包含文件包含了CAsyncSockejt CSocket 和CSocketFile(47) CAs yn cSocke类对象称为异步选择(48) 创建该对象的底层套接字句柄Create(成员函数49) 流式异步套接字对象,使用端口是2750) 套接字相关的事件与通知消息,有6(51) 根据TCP或者UDP的端口分配机制,保留端口的范围是?????0~1023(52) UNIX操作系统对文件和所有其它的输入/输出设备,采用一种统一的操作模式。
Wininet详解
⊙WinInet=============================================================================== 1、一个Internet客户端程序的目的是通过Internet协议如:HTTP、FTP等来存取网络数据源(服务器)的信息。
2、客户端程序可以访问服务器获得数据,或与服务器交换信息。
3、Internet客户端程序可以通过外部网络(Internet)或内部网络(一般为Intranet)访问服务器。
4、为了开发Internet客户端程序,delphi提供了专门的Win32 Internet 扩展接口,也就是WinInet。
在编写WinInet客户端程序时,可以直接调用Win32函数。
5、Win32 Internet 扩展提供了对普通Internet协议的访问,这些协议包括:HTTP、FTP。
6、借助于WinInet编程接口,开发人员不必去了解Winsock、TCP/IP和特定Internet协议的细节就可以编写出高水平的Internet客户端程序。
7、WinInet为所有几种协议(HTTP、FTP)提供了统一的函数集,也就是Win32 API接口。
利用这些统一的函数集,大大简化了针对HTTP、FTP等协议的编程,从而轻松地将Internet集成到自己的应用程序中。
在后继文章中我们将进一步讨论用WinInet实现Internet客户端应用程序的具体步骤和细节。
(待续)=============================================================================== ⊙url=============================================================================== URI1.什么是URIWeb上可用的每种资源- HTML文档、图像、视频片段、程序等- 由一个通过通用资源标志符(Universal Resource Identifier, 简称"URI")进行定位。
WinInet错误代码(12001到12156)
WinInet错误代码(12001到12156)在 Microsoft Win 32 Internet (WinInet) API 提供具有轻松访问的独⽴应⽤程序以标准的 Internet 协议(例如 Gopher、 FTP 和 HTTP。
WinInet API 提取到 Win 32 开发⼈员所熟悉的⾼级别接⼝的协议。
以下是 WinInet 函数返回的错误代码的列表:Code Error Message and Description----- -----------------------------12001 ERROR_INTERNET_OUT_OF_HANDLESNo more handles could be generated at this time.12002 ERROR_INTERNET_TIMEOUTThe request has timed out.12003 ERROR_INTERNET_EXTENDED_ERRORAn extended error was returned from the server. This istypically a string or buffer containing a verbose errormessage. Call InternetGetLastResponseInfo to retrieve theerror text.12004 ERROR_INTERNET_INTERNAL_ERRORAn internal error has occurred.12005 ERROR_INTERNET_INVALID_URLThe URL is invalid.12006 ERROR_INTERNET_UNRECOGNIZED_SCHEMEThe URL scheme could not be recognized or is not supported.12007 ERROR_INTERNET_NAME_NOT_RESOLVEDThe server name could not be resolved.12008 ERROR_INTERNET_PROTOCOL_NOT_FOUNDThe requested protocol could not be located.12009 ERROR_INTERNET_INVALID_OPTIONA request to InternetQueryOption or InternetSetOptionspecified an invalid option value.12010 ERROR_INTERNET_BAD_OPTION_LENGTHThe length of an option supplied to InternetQueryOption orInternetSetOption is incorrect for the type of optionspecified.12011 ERROR_INTERNET_OPTION_NOT_SETTABLEThe request option cannot be set, only queried.12012 ERROR_INTERNET_SHUTDOWNThe Win32 Internet function support is being shut down orunloaded.12013 ERROR_INTERNET_INCORRECT_USER_NAMEThe request to connect and log on to an FTP server couldnot be completed because the supplied user name isincorrect.12014 ERROR_INTERNET_INCORRECT_PASSWORDThe request to connect and log on to an FTP server couldnot be completed because the supplied password isincorrect.12015 ERROR_INTERNET_LOGIN_FAILUREThe request to connect to and log on to an FTP serverfailed.12016 ERROR_INTERNET_INVALID_OPERATIONThe requested operation is invalid.12017 ERROR_INTERNET_OPERATION_CANCELLEDThe operation was canceled, usually because the handle onwhich the request was operating was closed before theoperation completed.12018 ERROR_INTERNET_INCORRECT_HANDLE_TYPEThe type of handle supplied is incorrect for thisoperation.12019 ERROR_INTERNET_INCORRECT_HANDLE_STATEThe requested operation cannot be carried out because thehandle supplied is not in the correct state.12020 ERROR_INTERNET_NOT_PROXY_REQUESTThe request cannot be made via a proxy.12021 ERROR_INTERNET_REGISTRY_VALUE_NOT_FOUND A required registry value could not be located.12022 ERROR_INTERNET_BAD_REGISTRY_PARAMETERA required registry value was located but is an incorrecttype or has an invalid value.12023 ERROR_INTERNET_NO_DIRECT_ACCESSDirect network access cannot be made at this time.12024 ERROR_INTERNET_NO_CONTEXTAn asynchronous request could not be made because a zero context value was supplied.12025 ERROR_INTERNET_NO_CALLBACKAn asynchronous request could not be made because acallback function has not been set.12026 ERROR_INTERNET_REQUEST_PENDINGThe required operation could not be completed because one or more requests are pending.12027 ERROR_INTERNET_INCORRECT_FORMATThe format of the request is invalid.12028 ERROR_INTERNET_ITEM_NOT_FOUNDThe requested item could not be located.12029 ERROR_INTERNET_CANNOT_CONNECTThe attempt to connect to the server failed.12030 ERROR_INTERNET_CONNECTION_ABORTEDThe connection with the server has been terminated.12031 ERROR_INTERNET_CONNECTION_RESETThe connection with the server has been reset.12032 ERROR_INTERNET_FORCE_RETRYCalls for the Win32 Internet function to redo the request.12033 ERROR_INTERNET_INVALID_PROXY_REQUESTThe request to the proxy was invalid.12036 ERROR_INTERNET_HANDLE_EXISTSThe request failed because the handle already exists.12037 ERROR_INTERNET_SEC_CERT_DATE_INVALIDSSL certificate date that was received from the server isbad. The certificate is expired.12038 ERROR_INTERNET_SEC_CERT_CN_INVALIDSSL certificate common name (host name field) is incorrect. For example, if you entered and the common name on the certificate says .12039 ERROR_INTERNET_HTTP_TO_HTTPS_ON_REDIRThe application is moving from a non-SSL to an SSLconnection because of a redirect.12040 ERROR_INTERNET_HTTPS_TO_HTTP_ON_REDIRThe application is moving from an SSL to an non-SSLconnection because of a redirect.12041 ERROR_INTERNET_MIXED_SECURITYIndicates that the content is not entirely secure. Some ofthe content being viewed may have come from unsecuredservers.12042 ERROR_INTERNET_CHG_POST_IS_NON_SECUREThe application is posting and attempting to changemultiple lines of text on a server that is not secure.12043 ERROR_INTERNET_POST_IS_NON_SECUREThe application is posting data to a server that is notsecure.12110 ERROR_FTP_TRANSFER_IN_PROGRESSThe requested operation cannot be made on the FTP session handle because an operation is already in progress.12111 ERROR_FTP_DROPPEDThe FTP operation was not completed because the session was aborted.12130 ERROR_GOPHER_PROTOCOL_ERRORAn error was detected while parsing data returned from thegopher server.12131 ERROR_GOPHER_NOT_FILEThe request must be made for a file locator.12132 ERROR_GOPHER_DATA_ERRORAn error was detected while receiving data from the gopherserver.12133 ERROR_GOPHER_END_OF_DATAThe end of the data has been reached.12134 ERROR_GOPHER_INVALID_LOCATORThe supplied locator is not valid.12135 ERROR_GOPHER_INCORRECT_LOCATOR_TYPEThe type of the locator is not correct for this operation.12136 ERROR_GOPHER_NOT_GOPHER_PLUSThe requested operation can only be made against a Gopher+ server or with a locator that specifies a Gopher+operation.12137 ERROR_GOPHER_ATTRIBUTE_NOT_FOUNDThe requested attribute could not be located.12138 ERROR_GOPHER_UNKNOWN_LOCATORThe locator type is unknown.12150 ERROR_HTTP_HEADER_NOT_FOUNDThe requested header could not be located.12151 ERROR_HTTP_DOWNLEVEL_SERVERThe server did not return any headers.12152 ERROR_HTTP_INVALID_SERVER_RESPONSEThe server response could not be parsed.12153 ERROR_HTTP_INVALID_HEADERThe supplied header is invalid.12154 ERROR_HTTP_INVALID_QUERY_REQUESTThe request made to HttpQueryInfo is invalid.12155 ERROR_HTTP_HEADER_ALREADY_EXISTSThe header could not be added because it already exists.12156 ERROR_HTTP_REDIRECT_FAILEDThe redirection failed because either the scheme changed(for example, HTTP to FTP) or all attempts made to redirectfailed (default is five attempts).。
MFC FTP文件传输
大学研究生堂下考试答卷2014-2015学年第 1 学期考试科目姓名年级专业2014年12月28日《面向对象程序设计》课程报告学号:姓名:学院:图1.1:流式套接字工作过程图1.2:报文套接字工作过程二、WinInet编程WinInet是windows internet扩展应用程序高级编程接口,是专为开发具有Internet功能的客户机端应用程序而提供的。
它有两种形式:WinInet API包含一个C语言的函数集,MFC WinInet类则是对前者的面向对象的封装。
WinInet主要用于Internet关于FTP文件传输协议,HTTP超文图2.1:FTP客户端表2.1:单线程客户端添加成员变量控件类型ID 变量名控件类型ID 变量名CButton IDC_BUTTON_DO m_btnDownloadCButton IDC_BUTTON_Rm_btnremove由于自己之前自学过C++编程,大学本科时也开设了相关MFC编程的课程,所以对C++编程有一定的了解。
但是因为对于C++编程的基本语法是通过自学的,还是有一定的局限性,因此在上面向对象程序设计这门课的过程中老师还是帮助我解决了许多之前一直困扰我的疑惑。
在上课的过程中以及在课后关于程序的编写我都花了大量的精力,虽然比较辛苦但是我还是比较快乐,特别满足于当遇到困难之后通过各种方法将其解决之后的快感。
填表日期:2014.12.24聊天室操作手册本次基于MFC开发的聊天室主要由服务器和客户端构成,不同用户可以通过客户端进行对话,服务器也可以发送服务器消息,在客户端还可以进行文件传输,文件传输有单线程和多线程的区别。
一、界面介绍1.服务器服务器界面如下图所示:图1.1:服务器2.客户端客户端界面如下图所示:图1.2:客户端二、连接过程1.服务器连接首先运行服务器进行端口设置,这里默认值为7000图2.1:客户端连接示意图1图2.2:客户端连接示意图2通过以上设置,服务器即已经初始化完成,等待客户端连入。
WinInet HTTP异步处理方式的使用
INTERNET_FLAG_NO_CACHE_WRITE, (LPARAM)this );
回调会收到一堆的消息。这是收到的dwInternetStatus值的顺序:
3&4:使用InternetOpenUrl打开连接,等待INTERNET_STATUS_REQUEST_COMPLETE通知
使用lParam发送一个任务表示到你的回调。我总是用this指针来传递我的class。这里假设你知道如何处理回调。
InternetOpenUrl( m_Session, uurl, NULL, 0,
{
(调整ib值)
bOk = InternetReadFileEx( m_hHttpFile, &ib, IRF_ASYNC, (LPARAM)this );
if(!bOk && GetLastError()==ERROR_IO_PENDING)
等待...
}
你的回调函数会收到这些消息:
InternetReadFile接收InternetOpenUrl返回的句柄。它也对其他Win32网络函数,例如FtpOpenFile,FopherOpenFile和HttpOpenRequest返回的句柄有影响。
剩下的InternetReadFile的三个参数也非常的明白直接。Inbuffer是指向保留数据的缓冲区的一个无返回值指针,dwNumberOfByteToRead以字节为单位指定缓冲区的尺寸。最后一个参数,lpdwNumberOfBytesRead是一个指向包含读入缓冲区字节数的变量的指针。如果返回值是TRUE,而且lpdwNumberOfBytesRead指向0,则文件已经读到了文件的末尾。这个行为与Win32 Re3adFile的函数的行为是一致的。一个真正的web浏览器将在InternetReadFile上循环 ,不停地从Internet上读入数据块。
WinInet类的介绍
WinInet类的介绍WinInet类的介绍发表:不详阅读:次关键字:字体:[大中小]目前Visual C++ 6.0支持的网络编程有三种方式:一种是ISAPI,既基于网络服务器应用程序设计接口的程序,主要用来创建FTP服务器、PROXY代理服务器、HTTP服务器、SMTP服务器、BBS服务器、网络数据库服务器等服务器程序。
一种是WindowsSocket2,即基于Windows套接口编程,源于UNIX的套接口编程。
还有一种便是WinInet基于国际互连网客户端应用设计接口的程序。
MFC把这些国际互连网方面的扩展内容封装到一系列标准的易于使用的类中。
用户可以直接调用Win32的函数或使用MFC的WinInet类库,来写一个客户端应用。
用户可以通过WinInet来做以下应用:1 下载HTML主页。
2 发送FTP请求,上载、下载文件或得到目录列表。
3 使用Gopher的菜单系统来访问互连网上的资源。
MFC提供了以下编写互连网客户端应用的类库和全局函数:1 CInternetSession用它来创建或初始化单一的或多个同时进行的对话。
2 CInternetConnection它使用户连接到互连网服务器上,它是CFtpConnection、CHttpConnection和CGopherConnection的基类。
3 CInternetFile它和派生类CHttpFile和CGopherFile允许通过互连网协议访问远程系统上文件4 CFileFind它执行本地文件的查找。
举例:CFileFind finder;BOOL bWorking=finder.FindFile("*.*");while(bWorking){bWorking=finder.FindNextFile();cout<<(LPCTSTR)finder.GetFineName()<<endl;}5 CInternetException包含了两个公共数据成员:一个保存和异常相关的错误代码,一个保存和异常相关的应用程序的上下文标志符。
自考网络应用程序设计题库答案
一、选择题(1)UDP可以提供的端口数是 65535(2)根据TCP或UDP端口的分配规则,端口254 保留给特定的服务(3)保留给其他服务的端口是 256(4)在Internet中,用三元组标识一个应用层进程。
这种三元组,指的是传输层协议,主机的IP地址,传输层的端口号(5)在Internet中,可以标识一个完整的网间通信的是传输层协议,本地机IP地址,本地机传输层端口,远地机IP地址,远地机传输层端口(6)规定纯文本电子邮件信件的格式的是 RFC822(7)接收电子邮件的邮局协议是 POP3(8)因特网上使用最多的一种应用是 email(9)SMTP命令的一般的格式命令关键字参数 <CRLF>(10)SMTP客户问候SMTP服务器命令格式是 HELO 发送方的主机名 <CRLF>(11)写信字段的格式是 MAIL FROM:发信人的电子邮件地址 <CRLF>(12)请求发送邮件内容命令格式: DATA <CRLF>(13)空操作命令格式: NOOP <CRLF>(14)系统状态或系统帮助应答码字是 211(15)帮助信息的码字是 214(16)服务器关闭传输通道码字是 221(17)网易的SMTP服务器的域名是规定电子邮件信件内容结构的标准是RFC822(18)信头字段包括四部分,第一部分是字段名(19)信头字段的结构包括字段折叠(20)发送者对发送的发送格式是 Sender:mailbox <CRLF>(21)Win32操作系统下支持多进程多线程机制(22)阻塞套接字的I/O操作调用、等待、返回(23)套接字I/O模型,种类数是 5(24)不是图形界面的操作系统有 DOS(25)一般C程序中的Main或WinMain函数是主线程(26)Win32操作系统中可调度的最小的执行单位线程(27)为程序员提供了Windows应用程序的集成开发环境的是 vc++(28)线程分的种类数是 2(29)在MFC应用程序中,所有的线程是 CWinThread对象(30)适用于处理那些不要求用户输入并且比较消耗时间的其他任务的是工作线程(31)一个工作线程对应一个控制函数(32)创建并启动工作线程的函数 AfxBeginThread(33)用户界面窗口类,包括窗口,对话框(34)AfxBeginThread()函数的第一个参数是 pThreadClass(35)Windows Internet扩展应用程序高级编程接口 WInternet(36)利用MFC WinInet类来编写Internet应用程序还具的优点支持Web 代理服务器访问(37)封装了HINTERNET会话根句柄的是 CInternetSession类(38)文件类包括 CInternetFile类(39)代表MFC WinInet类的成员函数在执行时所发生的错误或异常的是CInternetFile类(40)使用WinInet类编程的步骤包括创建CInternetSession类对象,创建并初始化Internet会话(41)如果需要使用异步操作模式,可以重载 OnStatusCallback函数(42)MFC提供的套接字类是 Windows Socket API(43)CSocket类派生于 CAsyncSocket类(44)管理通信的是 CSocketFile(45)的包含文件包含了 CAsyncSocket,CSocket,和CSocketFile(46)CAsyncSocket类对象称为异步选择(47)创建该对象的底层套接字句柄 Create()成员函数(48)流式异步套接字对象,使用端口是 27(49)套接字相关的事件与通知消息,有 6(50)根据TCP或者UDP的端口分配机制,保留端口的范围是?????0~1023(51)UNIX操作系统对文件和所有其它的输入/输出设备,采用一种统一的操作模式。
WinINet与WinHttp总结
背景WinInet和WinHttp是windows平台下提供了两套独立的网络库,按照微软官方的说法,WinInet的优势在于client-端的应用,而WinHttp更适用于server-端编程。
从名称上我们可以看出WinHttp在Http协议应用方面要比WinInet更加专业,WinInet支持的协议包括Gopher\HTTP\HTTPS\FTP较为杂乱,而WinHttp库专门是为HTTP\HTTPS服务的。
WinInet支持如此多协议的原因在于其自身是IE浏览器的网络层,所以它必须提供全方位的服务,包括各种协议的封装以及Cache机制。
同时WinInet API的行为也被IE的设置所影响,具体表现为:用户通过“IE菜单->工具->连接->添加”可以为WinInet API指定专用的网络连接,autodialing服务没有从WinInet模块中分离出来;用户通过“IE菜单->工具->连接->局域网设置”可以为特定协议请求设置代理服务器,这一设置会影响到WinInet API 的行为;如果代理服务器需要用户/密码验证,则直接读取IE默认代理配置会使WinInet API访问失败,IE代理设置中不保存验证信息;WinInet API提供了持久化Cookie的机制,连接请求发起前必须手动清空Cookie,否则它们会在后续的请求中出现;WinInet的Cookie设置是针对特定URL而不是某次特定的请求,这种方式适用于IE浏览器应用,但对于我们目前的产品需求而言,降低了安全性。
WinHttp程序库不存上述问题,它是专门为Http应用量身定制的网络库。
在平台要求方面,WinInet程序库要求客户运行在windows 2000 以及后续版本,而WinHttp 程序库要求客户运行在Windows XP,Windows 2000 sp3以及后续版本,对于大多数Windows平台上的Http应用,官方推荐使用WinHttp,并给出了将现有WinInet API应用向WinHttp API转换的解决方案。
WinInet中的几个网络函数
WinInet中的几个网络函数(2012-06-02 08:28:40)转载▼分类:科学技术标签:转载学习原文地址:WinInet中的几个网络函数作者:yk0237InternetGetConnectedStateBOOL InternetGetConnectedState(OUT LPDWORD lpdwFlags, IN DWORD dwReserved );判断当前是否有internet连接有则返回true,无则false若有连接,则lpdwFlags 中会存放着连接方式1InternetOpen初始化WININET.DLL。
它在其他的Win32网络函数之前被调用。
HINTERNET hNet = ::InternetOpen("MSDN SurfBear", // 1 LPCTSTR lpszCallerNamePRE_CONFIG_INTERNET_ACCESS, // 2 DWORD dwAccessType"", // 3 LPCTSTR lpszProxyNameINTERNET_INV ALID_PORT_NUMBER, // 4 INTERNET_PORT nProxyPort0 // 5 DWORD dwFlags) ;InternetOpen返回一个类型为HINTERNET的句柄。
其他的Win32网络函数把这个句柄当作一个参数。
InternetOpen 的第一个参数lpszCallerName指定正在使用网络函数的应用程序。
当HTTP协议使用时,这个名字将变成用户代理。
第二个参数dwAccessType指定访问类型。
NProxyPort参数用在CERN_PROXY_INTERNET_ACCESS中用来指定使用的端口数。
使用INTERNET_INV ALID_PORT_NUMBER相当于提供却省的端口数。
最后一个参数dwFlags,设置额外的选择。
用WinInet类编写Internet客户应用程序
微
机
笸
展
20 0 2年 第 l期
文 章 蝙 号 : 0 5—3 51 2 0 ) —0 3 10 7 (0 2 01 0 6—0 4
用 Wil e 类编 写 Itr e 客 户 应 用程 序 nn t nent
U s n i ne a s t Dev l nt r tCle i g W nI tCl s o e op I e ne i ntApplca i i ton
程序 的开 发 不再 是那 么 枯操 乏 味, 只需 几 行 代 码 或 在 Ap Wi r 话框 中选 择 一 个 检 查 框 , 能 给 应 用 程 p z d对 a 就 序 增加 许 多夸 』 惊 奇 的功 能 。 、 1 Wil e 类 的组成 nn t W mle 是 一 个类 集 , 门用 于 Itr e 客 户应 用 nt 专 nen t 程序的 编 写 , 由一 些 类和 全 局 函 数 组 成 。下 面 蛤 出 它 了该类 集 的组 成 、 的层 次 关 系 及 每 个 类 的简 要 用 途 类 说 明。 其 中 Wile n nt的组成 类 见 表 l WiIe 的 全 局 , nn t 函数见 表 2 这 些 类和 全 局 函数 除 cFl id在 AF - Fn e X. H 中声 明 外 它均 在 A XI T H 中声 明 。因此 , 其 F NE 在 编写 Itme 客户应 用 程 序时应 包 台 上头 文 件 。 ne t
Irme 网 络 资 携【 访 问 Байду номын сангаас ne t 的
W il e ( i3 n e r E t n i t) n n t W n 2 I tme x e s r 是 Mi oo t os c sf r 在 VC’ 6 0 M F Mi oo tF u d t n C ass 中 提 C( c s : o n ai l e ) r [ o s
HTTP客户端Wininet教程课件 (二)
HTTP客户端Wininet教程课件 (二)- Wininet是什么?Wininet是Windows操作系统提供的一个用于开发网络应用程序的API。
它提供了对HTTP、FTP、Gopher和其他Internet协议的支持。
Wininet可用于开发Web浏览器、FTP客户端、邮件客户端等网络应用程序。
- Wininet的优点是什么?Wininet提供了一些优点,如:1. 简单易用:Wininet的API简单易用,可以快速开发网络应用程序。
2. 高效稳定:Wininet使用了优化的算法和数据结构,可以提高网络应用程序的性能和稳定性。
3. 可扩展性:Wininet可以扩展到其他Internet协议,使得开发人员可以开发更多类型的网络应用程序。
- Wininet的功能有哪些?Wininet提供了以下功能:1. HTTP协议支持:Wininet可以处理HTTP请求和响应,包括GET、POST等方法。
2. FTP协议支持:Wininet可以处理FTP请求和响应,包括上传、下载等操作。
3. Gopher协议支持:Wininet可以处理Gopher请求和响应。
4. Cookie支持:Wininet可以管理和处理Cookie,支持持久化Cookie。
5. 缓存支持:Wininet可以缓存请求和响应,提高网络应用程序的性能。
6. 安全支持:Wininet可以处理HTTPS协议,支持SSL和TLS加密。
- Wininet的使用步骤是什么?Wininet的使用步骤如下:1. 初始化Wininet:使用InternetOpen函数初始化Wininet。
2. 打开连接:使用InternetConnect函数打开连接。
3. 发送请求:使用HttpOpenRequest函数发送请求。
4. 接收响应:使用HttpSendRequest函数发送请求,并使用InternetReadFile函数接收响应。
5. 关闭连接:使用InternetCloseHandle函数关闭连接。
winInetAPI函数实例
winInetAPI函数实例基本步骤:1、用一个InternetOpen调用设置环境。
2、调用InternetConnect 函数与主机连接。
3、调用FtpGetFile 达到文件。
4、关闭第1、2步创建的句柄,用InternetCloseHandle 函数。
现在来仔细看看每一步:1、通过调用InternetOpen 函数设置环境。
下面是VB特定调用这一函数的声明:Private Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" _(ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName As String, _ByVal sProxyBypass As String, ByVal lFlags As Long) As Long 参数sAgent 用来指定调用WinINet 函数的应用程序或实体。
为了达到目的,可以设置FTP 控制。
参数lAccessType 指定我们是直接与某一主机相连还是使用代理服务器相连。
如果传递值1,就直接与主机连接。
如果传递3,就通过代理服务器。
如果传递0,连接时就要基于HKEY_CURRENT_USER\Software\Microsoft\Windows\Curren tVersion\Internet Settings下的注册表数值ProxyEnable、ProxyServer和ProxyOverride 。
我们可以使用参数sProxyName和sProxyBypass,而不是注册设置来提供代理服务器和不使用代理服务器的IP地址和名字。
列出代理的基本格式是rotocol=protocol://proxy_name:access_port?。
例如,要指定Proxy1 上的端口21为代理服务器,用Ftp=ftp://Proxy1:21?作为sProxyName。
用MFC WinInet类开发应用程序
在建立会话后就可以利用CInternetSession∷OpenURL打开 一个URL,并读取数据,函数原Inet通过HTTP协议读 取网上文件。完成这一功能的代码非常简单,当然代码
中少了各种错误检测。
VC++程序设计基础
VC++程序设计基础
用MFC WinInet类开发应用程序
1.1 MFC WinInet类的优点及其功能
MFC对WinInet的封装是通过提供三个由CStdioFile派生类实现的。
MFC WinInet类有如下优点: (1)缓冲器输入输出; (2)数据的类型安全处理; (3)许多函数的参数都是缺省值; (4)对普通的Internet错误进行异常处理; (5)自动清除打开的句柄和连接。
使用WinInet提供的API函数,可以: (1)通过http协议下载html页,http协议是专门用在服务器和客户浏览
器之间传输html页。 (2)发送ftp请求上传或下载文件以及获取服务器的目录信息。通过匿
名登陆下载文件便是ftp的典型应用。
1.2 Internet客户端程序实现步骤
WinInet中的CInternetSession是管理会话的类。 CInternetSession的构造函数中接收六个参数:
VB WinInet 函数用法详解
VB WinInet 函数用法详解WinInet(「Windows Internet」)API帮助程序员使用三个常见的Internet协议,这三个协议是:用于World Wide Web万维网的超文本传输协议(HTTP:Hypertext Transfer Protocol)、文件传输协议(FTP:File Transfer Protocol)和另一个称为Gopher的文件传输协议。
WinInet函数的语法与常用的Win32 API函数的语法类似,这使得使用这些协议就像使用本地硬盘上的文件一样容易。
WinInet API的文件位于/Platform SDK/Internet, Intranet, Extranet Services/Internet Tools and Technologies/WinInet API。
请参见MSDN For VS 2005的详细资料:Microsoft provides many APIs for programming both client and server applications. Many new applications are being written for the Internet, and as technologies, browser capabilities, and security options change, new types of applications will be written. Browsers run on client computers, providing access to the World Wide Web and displaying HTML pages that contain text, graphics, ActiveX controls, and documents. Servers provide FTP, HTTP, and gopher services, and run server extension applications using CGI and ISAPI. Your custom application can retrieve information and provide data on the Internet....深入剖析 WinInet1、Linux的Socket资料2、EPOLL的资料3、HTTP SERVER 的资料4、深入windows 源代码目录=============================================================================== ⊙ WinInet 概述⊙ Hinternet 句柄的层次关系⊙ HTTP 函数层次关系⊙ 典型的 HTTP 客户端程序的处理流程1、普通 WinInet 处理函数⊙ InetrnetOpen 初始化 WinInet.dll⊙ InternetOpenUrl 打开 Url,读取数据⊙ InternetAttemptConnect 尝试建立到 Internet 的连接⊙ InternetConnect 建立 Internet 的连接⊙ InternetCheckConnection 检查 Internet 的连接是否能够建立⊙ InternetSetOption 设置一个 Internet 选项⊙ Int ernetSetStausCallback 安装一个回调函数,供 API 函数调用⊙ InternetQueryOption 查询在一个指定句柄上的 Internet 选项⊙ InternetQueryDataAvailable 查询可用数据的数量⊙ InternetReadFile(Ex) 从一个打开的句柄读取数据⊙ InternetFindNextFile 继续文件搜寻⊙ InetrnetSetFilePointer 为 InternetReadFile 设置一个文件位置⊙ In ternetWriteFile 将数据写到一个打开的 Internet 文件⊙ InternetLockRequestFile 允许用户为正在使用的文件加锁⊙ InternetUnlockRequestFile 解锁被锁定的文件⊙ InternetTimeFromSystemTime 根据指定的 RFC 格式格式化日期和时间⊙ InternetTimeToSystemTime 将一个 HTTP 时间/日期字串格式化为 SystemTime 结构对象⊙ InternetConfirmZon eCrossing 检查在安全 URL 和非安全 URL 间的变化⊙ InternetCloseHandle 关闭一个单一的 Internet 句柄⊙ InternetErrorDlg 显示错误信息对话框⊙ InternetGetLastResponesInfo 获取最近发送的 API函数的错误2、HTTP 处理函数⊙ HttpOpenRequest 打开一个 HTTP 请求的句柄⊙ HttpSendRequert(Ex) 向 HTTP 服务器发送指定的请求⊙ HttpQuery Info 查询有关一次 HTTP 请求的信息⊙ HttpEndRequest 结束一个 HTTP 请求⊙ HttpAddRequestHeaders 添加一个或多个 HTTP 请求报头到 HTTP请求句柄3、FTP 处理函数⊙ FtpCreateDirectory 在 Ftp 服务器新建一个目录⊙ FtpDelectFile 删除存储在 Ftp 服务器上的文件⊙ FtpFindFirstFile 查找给定 Ftp 会话中的指定目录⊙ FtpGetCurrentDirectory 为指定 Ftp 会话获取当前目录⊙ FtpGetFile 从 Ftp 服务器下载文件⊙ FtpOpenFile 访问一个远程文件以对其进行读写⊙ FtpPutFile 向 Ftp 服务器上传文件⊙ FtpRemoveDirectory 在 Ftp 服务器删除指定的文件⊙ FtpRenameFile 为 Ftp 服务器上的指定文件改名=============================================================================== 本文排版格式为:正文由窗口自动换行;所有代码以 80 字符为边界;中英文字符以空格符分隔。
《客户》.用WinInet开发Internet客户端应用指南
为了创建Internet客户端程序,MFC提供了如下的C++类和全程函数:C++类全程函数:这些类和全程函数除CFileFind在AFX.H里声明之外,其余都在AFXINET.H文件里声明。
它们对HTTP、FTP和Gopher等协议进行了高度抽象,形成了一套高级API函数。
利用这些API可以快速直接地开发Internet应用。
例如,连接到FTP服务器一般需要几个步骤,而且需要做一些底层处理。
但使用上述的MFC类提供的API,只需要对CInternetSession::GetFTPConnection进行一次调用,便可以轻松建立连接。
大家知道,每一个Internet应用其数据交换都是建立在Internet会话(Session)的基础之上的,MFC是通过CInternetSession类对象来实现Internet会话的。
用这个类不仅可以创建会话,而且可以创建几个并发的Internet会话。
为了与服务器进行通讯,除了要创建CInternetSession对象之外,还必须创建CInternetConnection对象,针对不同的协议,CInternetConnection对象有三种类型:CInternetSession::GetFtpConnectionCInternetSession::GetHttpConnectionCInternetSession::GetGopherConnection这些函数调用并不会读写服务器上的文件。
如果你想要读写数据,必须要打开文件才能操作。
其处理流程应该是这样的:首先创建CInternetSession对象实例如果创建的Session要读写文件,则必须创建CInternetFile对象实例(或者是它的子类CHttpFile、CGopherFile对象实例)。
其实,读取数据最容易的方式是调用CInternetSession::OpenURL函数。
这个函数解析你提供的统一资源定位符(URL),然后打开与URL指定的服务器连接,同时返回一个只读的CInternetFile对象。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
用WinInet开发Internet客户端应用指南
编译/NorthTibet
一、概述
一个Internet客户端程序的目的是通过Internet协议如:HTTP、FTP等来存取网络数据源(服务器)的信息。
客户端程序可以访问服务器获得象天气预报,股票价格、重要新闻数据,甚至是与服务器交换信息。
Internet客户端程序可以通过外部网络(Internet)或内部网络(一般为Intranet)访问服务器。
为了开发Internet客户端程序。
MFC类库提供了专门的Win32 Internet 扩展接口,也就是WinInet。
MFC将WinInet封装在一个标准的、易于使用的类集合中。
在编写WinInet客户端程序时,你既可以直接调用Win32函数,也可以使用WinInet类库。
Win32 Internet 扩展提供了对普通Internet协议的访问,这些协议包括:HTTP、FTP和Gopher。
Gopher已经渐渐淡出。
借助于WinInet编程接口,开发人员不必去了解Winsock、TCP/IP和特定Internet协议的细节就可以编写出高水平的Internet客户端程序。
WinInet为所有几种协议(HTTP、FTP和Gopher)提供了统一的函数集,也就是Win32 API接口。
利用这些统一的函数集,大大简化了针对HTTP、FTP等协议的编程,从而轻松地将Internet集成到自己的应用程序中。
底层协议的转换(如从FTP到HTTP)只要对源代码稍作修改就可以完成。
在Visual C++工程中提供有两种方式来使用WinInet。
一种是直接调用Win32 Internet函数,另一种是使用WinInet类库。
MFC对WinInet的封装是通过提供三个由CStdioFile派生类实现的。
这三个派生类是:CInternetFile、CHttpFile 和CGopherFile。
由于Gopher协议已经很少使用,所以本文将不再对CGopherFile进行讨论。
对开发人员来说,不管你以前是否用过CStdioFile,WinInet都是很好理解并且易于使用的。
它使得存取Internet数据易如反掌,使得Internet数据和本地数据的处理一致透明,数据的存储位置已经不再重要。
MFC WinInet 类有如下优点:
∙缓冲器输入输出
∙数据的类型安全处理
∙许多函数的参数都是缺省值
∙对普通的Internet错误进行异常处理
∙自动清除打开的句柄和连接
使用WinInet 提供的API函数,你可以:
∙通过HTTP协议下载HTML页,HTTP协议是专门用于在服务器和客户浏览器之间传输HTML页。
∙发送FTP请求上传或下载文件以及获取服务器的目录信息。
通过匿名登陆下载文件便是FTP的典型应用。
∙其它基于HTTP、FTP协议的应用。
使用WinInet 的一般流程为:
图一
下表描述了一个Internet客户端程序实现的一般步骤:
为了创建Internet客户端程序,MFC提供了如下的C++类和全程函数:
C++类
CInternetSession (父类CObject)
CInternetConnection (父类CObject)
CFtpConnection
CGopherConnection
CHttpConnection
CInternetFile(父类CStdioFile)
CGopherFile
CHttpFile
CFileFind(父类CObject)
CFtpFileFind
CGopherFileFind
CGopherLocator(父类CObject)
CInternetException(父类CException)
全程函数:
AfxParseURL
AfxGetInternetHandleType
AfxThrowInternetException
这些类和全程函数除CFileFind在AFX.H里声明之外,其余都在AFXINET.H 文件里声明。
它们对HTTP、FTP和Gopher等协议进行了高度抽象,形成了一套高级API函数。
利用这些API可以快速直接地开发Internet应用。
例如,连接到FTP服务器一般需要几个步骤,而且需要做一些底层处理。
但使用上述的
MFC类提供的API,只需要对CInternetSession::GetFTPConnection进行一次调用,便可以轻松建立连接。
大家知道,每一个Internet应用其数据交换都是建立在Internet会话(Session)的基础之上的,MFC是通过CInternetSession类对象来实现Internet 会话的。
用这个类不仅可以创建会话,而且可以创建几个并发的Internet会话。
为了与服务器进行通讯,除了要创建CInternetSession对象之外,还必须创建CInternetConnection对象,针对不同的协议,CInternetConnection对象有三种类型:
∙CInternetSession::GetFtpConnection
∙CInternetSession::GetHttpConnection
∙CInternetSession::GetGopherConnection
这些函数调用并不会读写服务器上的文件。
如果你想要读写数据,必须要打开文件才能操作。
其处理流程应该是这样的:
∙首先创建CInternetSession 对象实例
∙如果创建的Session要读写文件,则必须创建CInternetFile 对象实例(或者是它的子类CHttpFile、CGopherFile 对象实例)。
其实,读取数据最容
易的方式是调用CInternetSession::OpenURL函数。
这个函数解析你提
供的统一资源定位符(URL),然后打开与URL指定的服务器连接,同时
返回一个只读的CInternetFile对象。
CInternetSession::OpenURL不针对
特定的协议类型——不管是FTP还是HTTP都可以调用,它甚至可以处理
本地文件,此时返回的是CStdioFile,而不是CInternetFile。
∙如果创建的Session不读写文件,而是要实现其它的任务,如删除某个FTP目录下的文件等,则你不需要创建CInternetFile实例。
创建CInternetFile对象的方法有两种:
∙如果用CInternetSession::OpenURL建立与服务器的连接,调用返回CStdioFile。
∙如果用CInternetSession::GetFtpConnection、GetGopherConnection或者CHttpConnection::OpenRequest建立与服务器的连接,你必须调用相
应的CFtpConnection::OpenFile、CGopherConnection::OpenFile或者CHttpConnection::OpenRequest,返回的内容也与CInternetFile、
CGopherFile或者CHttpFile对应。
综上所述,实现Internet客户端应用的步骤因协议而异。
要看你是创建基于OpenURL的一般Internet客户端应用,还是使用GetXXXConnection函数之一针对特定协议的Internet客户端应用。
在后继文章中我们将进一步讨论用WinInet实现Internet客户端应用程序的具体步骤和细节。
二、实现步骤
大家知道,每个Internet客户端程序都伴随有一定的目的行为,如读文件、写文件、删除文件等等。
客户端的程序要实现这些行为的先决条件是建立Internet连接。
然后再根据不同的目的进行具体的操作。
为了方便起见,下面这这些张表格针对不同的应用行为列出了所需要的具体操作。
其中列出了一般的Internet URL (FTP、或者HTTP)客户端行为要实现某个目标所必须使用的方法。
这张表格的内容来自MSDN。
我对部分我认为重要的地方做了补充。
由于时间关系,我没有写本文的例子代码。
不过MSDN里有两个简单的例子可以参考,一个是FTPTREE,另一个是TEAR。
此外,也可以用“WinInet”作为关键字在google里搜一下也能找到一些使用MFC WinInet的技术信息。
(。