http 协议 c++代码 获取网页
最近接触了些 html 和 JavaScript,索性了解下 http 协议。在园子里找到了 HTTP协议详解,图文并茂,很爽!
于是小小的尝试了下
#include <WinSock2.h>
#include <iostream>
#include <string>
#include <fstream> #pragma comment(lib, "ws2_32.lib") using namespace std; const int g_nPort = 80;
const string g_strAddr = "www.cnblogs.com";
const string g_strPath = "/hangj/"; int main(int argc, char* argv[])
{
WSADATA WSAData;
if (WSAStartup(MAKEWORD(2,2), &WSAData)){
printf("initializationing error!\n");
WSACleanup();
exit(-1);
} struct hostent *he;
if ((he = gethostbyname(g_strAddr.c_str()))==NULL){
printf("gethostbyname failed.\n");
WSACleanup();
exit(-1);
} struct sockaddr_in CliAddr = {0};
CliAddr.sin_family = AF_INET;
CliAddr.sin_port = htons(g_nPort);
CliAddr.sin_addr = *((struct in_addr*)he->h_addr_list[0]);
cout <<"ip: "<< inet_ntoa(*(struct in_addr*)he->h_addr_list[0]) <<endl; int sockfd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (INVALID_SOCKET == sockfd){
printf("socket failed.\n");
WSACleanup();
exit(-1);
}
if (0 > connect(sockfd, (struct sockaddr*)&CliAddr, sizeof(CliAddr))){
printf("connect failed.\n");
WSACleanup();
exit(-1);
}
string strSend="";
strSend += "GET " + g_strPath + " HTTP/1.1\n"; // URL
strSend += "Host: " + g_strAddr + "\n\n"; // Host char bufSend[1024]={0};
sprintf(bufSend, "%s", strSend.c_str());
if (0 > send(sockfd, bufSend, strlen(bufSend), 0)){
printf("send failed.\n");
WSACleanup();
exit(-1);
} ofstream os("hangj.html"); char bufRecv[10]={0};
int nRet=0;
printf("recv: \n");
while (sizeof(bufRecv)-1 <= (nRet=recv(sockfd, bufRecv, sizeof(bufRecv)-1, 0))){
bufRecv[nRet] = 0;
printf("%s", bufRecv);
os << bufRecv;
}
bufRecv[nRet] = 0;
printf("%s\n", bufRecv);
os << bufRecv; os.close();
closesocket(sockfd);
WSACleanup();
getchar();
return 0;
}
http 协议 c++代码 获取网页的更多相关文章
- 【转】如何在Windows+VS2005使用最新静态libcurl 7.35.0获取网页数据,支持HTTPS
地址: http://blog.csdn.net/hujkay作者:Jekkay Hu(34538980@qq.com)关键词:Windows,curl,ssl, visual c++ 2005, ...
- JS远程获取网页源代码的例子
js代码获取网页源代码. 代码: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> < ...
- php正则获取网页标题、关键字、网页描述代码
php正则获取网页关键字,代码如下: function get_keywords($html) { $html=strtolower($html); preg_match("@<hea ...
- php获取网页中图片并保存到本地的代码
php获取网页中图片并保存到本地的代码,将网页中图片保存本地文件夹: <?php /** * 获取网页中图片,并保存至本地 * by www.jbxue.com */ header(" ...
- Python获取网页html代码
获取网页html代码: import requests res = requests.get('https://www.cnblogs.com/easyidea/p/10214559.html') r ...
- JSON使用——获取网页返回结果是Json的代码
public String getWebData(String strUrl){ String json = null; try { URL url = new URL(strUrl); HttpUR ...
- c# 获取网页源代码(支持cookie),最简单代码
/// /// 获取网页源码 public static string GetHtmls(string url, string referer = "", string cooki ...
- c#利用WebClient和WebRequest获取网页源代码的比较
前几天举例分析了用asp+xmlhttp获取网页源代码的方法,但c#中一般是可以利用WebClient类和WebRequest类获取网页源代码.下面分别说明这两种方法的实现. WebClient类获取 ...
- C# HttpWebRequest 绝技 根据URL地址获取网页信息
如果要使用中间的方法的话,可以访问我的帮助类完全免费开源:C# HttpHelper,帮助类,真正的Httprequest请求时无视编码,无视证书,无视Cookie,网页抓取 1.第一招,根据URL地 ...
随机推荐
- 3.说一下你了解的弹性FLEX布局.
页面布局一直都是web应用样式设计的重点 我们传统的布局方式都是基于盒模型的 利用display.position.float来布局有一定局限性 比如说实现自适应垂直居中 随着响应式布局的流行,CSS ...
- MapReduce 计算模式
声明:本文摘录自<大数据日知录——架构与算法>一书. 较常见的计算模式有4类,实际应用中大部分ETL任务都可以归结为这些计算模式或者变体. 1.求和模式 a.数值求和 比如我们熟悉的单词计 ...
- css页面组件
页面组件 1 元素的尺寸/边框/背景 1.1 css尺寸相关属性 height 高度 min-height 最小高度 max-height 最大高度 width 宽度 min-width 最小宽度 m ...
- 2018.07.23 codeforces 438D. The Child and Sequence(线段树)
传送门 线段树维护区间取模,单点修改,区间求和. 这题老套路了,对一个数来说,每次取模至少让它减少一半,这样每次单点修改对时间复杂度的贡献就是一个log" role="presen ...
- asp.net web api 安装swagger
使用nuget控制台, 输入 Install-Package Swashbuckle,回车,等待安装引用.nuget国内没有镜像,安装比较慢 安装成功后会多出一个引用 右键工程点--属性,左边导航栏选 ...
- 如何让编译器实现struts2的xml提示
首先,选择pereference--->搜索xml 找到xml Catalog 点击右侧的add添加 下载好对应的dtd文档,然后在本地的WEB-INF下建立一个dtd文件夹,将dtd拷入. A ...
- AdapterViewFlipper功能 自动播放的图片库
案例中有"上一个""下一个""自动播放",但是我觉得可以更加完善一下,点击自动播放,按钮变成"停止播放",在按" ...
- cmake-include_directories
include_directories: Add include directories to the build. include_directories([AFTER|BEFORE] [SYSTE ...
- (匹配)Dolls --HDU --4160
链接: http://acm.hdu.edu.cn/showproblem.php?pid=4160 代码: #include<stdio.h> #include<string.h& ...
- Vuejs——(5)v-on
版权声明:出处http://blog.csdn.net/qq20004604 目录(?)[+] 资料来于官方文档: http://cn.vuejs.org/guide/events.html ...