WinInet API浅谈

来源:互联网 发布:meta分析数据提取表 编辑:程序博客网 时间:2024/05/01 04:12

API列表

  • InternetAttemptConnect
// 功能:判断本机是否处于联网状态// 返回值:如果成功,返回ERROR_SUCCESS,否则返回错误码DWORD InternetAttemptConnect(_In_  DWORD dwReserved   // 保留值,必须为0);
不过奇怪的是我把网卡禁用,把网线拔了,这个函数都返回ERROR_SUCCESS ,不知所以。
  • InternetCheckConnection
// 使用ping的方式检查本机是否可以联网,效率你懂得。// 返回值:如果ping通了,返返回TRUE表示可以联网,否则返回FALSEBOOL InternetCheckConnection(_In_  LPCTSTR lpszUrl,// Url地址,必须加http://且不能是IP地址_In_  DWORD dwFlags,// 0或者FLAG_ICC_FORCE_CONNECTION,后者表示强制建立一个连接_In_  DWORD dwReserved// 保留值);
使用示例:
BOOLbRet = FALSE;//dwRet = InternetAttemptConnect(NULL);bRet = InternetCheckConnection(_TEXT("***"), FLAG_ICC_FORCE_CONNECTION, 0);if(bRet != TRUE){printf("不能连接到网络!\n");return 0;}
代码结果是没有输出任何信息的,表示可以联网。
  • InternetOpen
// 打开一个网络会话句柄,该函数不会测试网络是否联通// 返回值:如果打开成功返回会话句柄,否则返回NULLHINTERNET InternetOpen(_In_  LPCTSTR lpszAgent,// 代理名称_In_  DWORD dwAccessType,// 访问权限_In_  LPCTSTR lpszProxyName,// 一般设为0,如果dwAccessType为INTERNET_OPEN_TYPE_PROXY,此处设置为代理服务器名称_In_  LPCTSTR lpszProxyBypass,// 一般设为0,如果dwAccessType为INTERNET_OPEN_TYPE_PROXY,此处设置为主机地址或者IP地址的列表_In_  DWORD dwFlags// 连接标志,支持的标志选项可组合);
微软给出的示例:
HINTERNET hInternetRoot;/* bypass the proxy for any host name that does not     contain a period */hInternetRoot = InternetOpen(TEXT("WinInet Example"),     INTERNET_OPEN_TYPE_PROXY,TEXT("proxy"),TEXT("<local>"), 0);/* bypass the proxy for any host name that starts with the     letters "ms" */hInternetRoot = InternetOpen(TEXT("WinInet Example"),     INTERNET_OPEN_TYPE_PROXY,TEXT("proxy"),TEXT("ms*"), 0);/* bypass the proxy for any host name that contains "int",     such as "internet" and "painter" */hInternetRoot = InternetOpen(TEXT("WinInet Example"),     INTERNET_OPEN_TYPE_PROXY,TEXT("proxy"),TEXT("*int*"), 0);/* bypass the proxy for the host name "example" and any     host name that contains "test" */hInternetRoot = InternetOpen(TEXT("WinInet Example"),     INTERNET_OPEN_TYPE_PROXY,TEXT("proxy"),TEXT("example *test*"), 0);/* Disable the loopback proxy bypass for localhost */hInternetRoot = InternetOpen(TEXT("WinInet Example"),     INTERNET_OPEN_TYPE_PROXY,TEXT("127.0.0.1:8888"),TEXT("<-loopback>"), 0);

我自己使用的示例:
// 打开初始化程序的网络连接hInternet = InternetOpen( _TEXT("httpDownload"), INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0 );if ( NULL == hInternet ){printf("打开网络失败!\n");return 0;}
  • InternetConnect
    //// 功能:根据指定的地址打开一个FTP、HTTP等类型的连接//// 返回值:成功返回连接句柄,失败返回NULLHINTERNET InternetConnect(_In_  HINTERNET hInternet,// 会话句柄(InternetOpen返回)_In_  LPCTSTR lpszServerName,// 地址,IP地址也行_In_  INTERNET_PORT nServerPort,// 端口号_In_  LPCTSTR lpszUsername,// 用户名_In_  LPCTSTR lpszPassword,// 密码_In_  DWORD dwService,// 服务类型:FTP,HTTP或者GOPHER_In_  DWORD dwFlags,// 一般使用0_In_  DWORD_PTR dwContext// 一般使用0);
    除非是FTP类型的连接,否则这个函数不会尝试或者建立目标地址的连接,他只负责初始化会话。使用示例:
    //打开连接HINTERNET hConnect = NULL;hConnect = InternetConnect(hInternet, _TEXT("www.baidu.com"), INTERNET_DEFAULT_HTTP_PORT, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0);if(NULL == hConnect){printf("打开网络连接失败!\n");return 0;}

0 0
原创粉丝点击