admin管理员组文章数量:1586841
一:WinSock API
WSAStartup,getaddrinfo,socket,connect,send,recv,WSAGetLastError
二:WinINet API
InternetOpen:初始化一个应用程序,以使用 WinINet 函数
InternetConnect:建立 Internet 的连接,成功返回非0。如果返回0。要InternetCloseHandle释放这个句柄
InternetOpenURL:通过一个完整的FTP、HTTP的URL打开资源
InternetReadFile,InternetWriteFile
HTTPOpenRequest:一旦和服务器的连接已经建立,我们打开了想要的文件。HttpOpenRequest和HttpOpenRequest一起工作打开文件。HttpOpenRequest去创建个请求句柄并且把参数存储在句柄中。HttpSendRequest把请求参数送到HTTP服务器
HTTPQueryInfo:用来查询一个HTTP请求的信息
使用样例举例如下:
https://blog.csdn/DebugFan/article/details/7549747
代码有改动:
// WinINet.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <stdio.h>
#include <windows.h>
#include <wininet.h>
#pragma comment(lib,"wininet.lib")
BOOL HttpDump(const TCHAR *lpszServerName, int iPort, const TCHAR *lpszObjectName)
{
TCHAR cBuf[2048];
DWORD dwRead;
HINTERNET hINet = NULL, hConnection = NULL, hRequest = NULL;
__try
{
hINet = InternetOpen(L"HttpDump/1.0", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
if (hINet == NULL)
{
printf("InternetOpen Failed. Error code: %d\n", GetLastError());
return false;
}
hConnection = InternetConnect(hINet, lpszServerName, iPort, L" ", L" ", INTERNET_SERVICE_HTTP, 0, 0);
if (hConnection == NULL)
{
printf("InternetConnect Failed. Error code: %d\n", GetLastError());
return false;
}
hRequest = HttpOpenRequest(hConnection, L"GET", lpszObjectName, NULL, NULL, NULL, INTERNET_FLAG_KEEP_CONNECTION, 0);
if (hRequest == NULL)
{
printf("HttpOpenRequest Failed. Error code: %d\n", GetLastError());
return false;
}
if (HttpSendRequest(hRequest, NULL, 0, NULL, 0) == 0)
{
printf("HttpSendRequest Failed. Error code: %d\n", GetLastError());
return false;
}
printf("Dump:\n");
do
{
if (InternetReadFile(hRequest, cBuf, sizeof(cBuf)-1, &dwRead))
{
printf("InternetReadFile Failed. Error code: %d\n", GetLastError());
return false;
}
else
{
if (dwRead == 0)
{
break;
}
else
{
cBuf[dwRead] = 0;
printf("%s", cBuf);
}
}
} while (TRUE);
printf("\nEnd Dump\n");
return TRUE;
}
__finally
{
if (hRequest)
{
InternetCloseHandle(hRequest);
}
if (hINet)
{
InternetCloseHandle(hINet);
}
if (hConnection)
{
InternetCloseHandle(hConnection);
}
}
return FALSE;
}
int _tmain(int argc, _TCHAR* argv[])
{
if (HttpDump(L"www.baidu", 80, L""))
{
printf("HttpDump OK\n");
}
else
{
printf("HttpDump Failed\n");
}
return 0;
}
结果是这样的:
HttpSendRequest Failed. Error code: 12029
HttpDump Failed
查询了一下12029:ERROR_INTERNET_CANNOT_CONNECT:The attempt to connect to the server failed.
估计是这么玩baidu是没有权限的吧~~~
三:COM接口
URLDownloadToFile:文件下载
CoInitialize:用来告诉 Windows以单线程的方式创建com对象
CoCreateInstance:函数名。用指定的类标识符创建一个Com对象,用指定的类标识符创建一个未初始化的对象
版权声明:本文标题:WINDOWS网络API总结 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dongtai/1727999984a1141736.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论