在vc中,可以采用两种形式的网络编程方式,一种是使用MFC的网络编程方式,一种是直接使用类WinInet API的编程方式。
WinInet类是对WinInet API的封装,它有许多优越之处,程序员无需了解网络传输协议和windows套接字的细节,只需简单的调用里的几个成员函数就可与服务器建立连接。它提供的几个管理数据在网络中传输的成员函数使用应用程序获取服务器的过程,就像从硬盘中读取数据一样简单。
WinInet 类的编程模型:1 创建CInternetSession类对象,初始化Internet 会话;2 建立CInternetSession对象与服务器的连接,调用函数CInternetSession::GetHttpConnection(),CInternetSession::GetFtpConnection()函数打开对应协议的连接,只里面需要制定服务器类型,端口号,用户名,密码,得到相应服务器对象 3 在连接时,可以调用CInternetSession::QueryOption函数 进行信息的查询。4 客户应用程序在进行操作时,需要调用回调函数监视会话的状态。5 以上是获得服务器的环境状态,通常客户应用程序的主要功能是处理数据,应获取CIneternet的实例:CFtpConnection::openFile()得到CFtpFile的对象指针。另外一种方法是CInternetSession::OpenURL()得到文件对象,得到服务器对象后就可以对服务器对象进行读取了,此后通过文件检索,基本上跟操作本地文件数据是一样的。
WinInet API进行网络编程需要大量的底层编程工作,包括win32编程,FTP,HTTP协议本身的了解,该函数包括WinInet API函数,自动拨号函数,URL函数,ftp函数,http函数,cookie函数,身份验证函数以及缓存函数。其函数列表有:
Wininet api函数列表
Platform SDK: Windows Internet
CommitUrlCacheEntry
CreateMD5SSOHash
CreateUrlCacheEntry
CreateUrlCacheGroup
DeleteUrlCacheEntry
DeleteUrlCacheGroup
DetectAutoProxyUrl
FindCloseUrlCache
FindFirstUrlCacheEntry
FindFirstUrlCacheEntryEx
FindFirstUrlCacheGroup
FindNextUrlCacheEntry
FindNextUrlCacheEntryEx
FindNextUrlCacheGroup
FtpCommand
FtpCreateDirectory
FtpDeleteFile
FtpFindFirstFile
FtpGetCurrentDirectory
FtpGetFile
FtpGetFileSize
FtpOpenFile
FtpPutFile
FtpRemoveDirectory
FtpRenameFile
FtpSetCurrentDirectory
GetUrlCacheEntryInfo
GetUrlCacheEntryInfoEx
GetUrlCacheGroupAttribute
GopherAttributEnumerator
GopherCreateLocator
GopherFindFirstFile
GopherGetAttribute
GopherGetLocatorType
GopherOpenFile
HttpAddRequestHeaders
HttpEndRequest
HttpOpenRequest
HttpQueryInfo
HttpSendRequest
HttpSendRequestEx
InternetAttemptConnect
InternetAutodial
InternetAutodialHangup
InternetCanonicalizeUrl
InternetCheckConnection
InternetCloseHandle
InternetCombineUrl
InternetConfirmZoneCrossing
InternetConnect
InternetCrackUrl
InternetCreateUrl
InternetDeInitializeAutoProxyDll
InternetDial
InternetErrorDlg
InternetFindNextFile
InternetGetConnectedState
InternetGetConnectedStateEx
InternetGetCookie
InternetGetCookieEx
InternetGetLastResponseInfo
InternetGetProxyInfo
InternetGoOnline
InternetHangUp
InternetInitializeAutoProxyDll
InternetLockRequestFile
InternetOpen
InternetOpenUrl
InternetQueryDataAvailable
InternetQueryOption
InternetReadFile
InternetReadFileEx
InternetSetCookie
InternetSetCookieEx
InternetSetDialState
InternetSetFilePointer
InternetSetOption