最近接触了些 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++代码 获取网页的更多相关文章

  1. 【转】如何在Windows+VS2005使用最新静态libcurl 7.35.0获取网页数据,支持HTTPS

    地址: http://blog.csdn.net/hujkay作者:Jekkay Hu(34538980@qq.com)关键词:Windows,curl,ssl,  visual c++ 2005, ...

  2. JS远程获取网页源代码的例子

    js代码获取网页源代码. 代码: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> < ...

  3. php正则获取网页标题、关键字、网页描述代码

    php正则获取网页关键字,代码如下: function get_keywords($html) { $html=strtolower($html); preg_match("@<hea ...

  4. php获取网页中图片并保存到本地的代码

    php获取网页中图片并保存到本地的代码,将网页中图片保存本地文件夹: <?php /** * 获取网页中图片,并保存至本地 * by www.jbxue.com */ header(" ...

  5. Python获取网页html代码

    获取网页html代码: import requests res = requests.get('https://www.cnblogs.com/easyidea/p/10214559.html') r ...

  6. JSON使用——获取网页返回结果是Json的代码

    public String getWebData(String strUrl){ String json = null; try { URL url = new URL(strUrl); HttpUR ...

  7. c# 获取网页源代码(支持cookie),最简单代码

    /// /// 获取网页源码 public static string GetHtmls(string url, string referer = "", string cooki ...

  8. c#利用WebClient和WebRequest获取网页源代码的比较

    前几天举例分析了用asp+xmlhttp获取网页源代码的方法,但c#中一般是可以利用WebClient类和WebRequest类获取网页源代码.下面分别说明这两种方法的实现. WebClient类获取 ...

  9. C# HttpWebRequest 绝技 根据URL地址获取网页信息

    如果要使用中间的方法的话,可以访问我的帮助类完全免费开源:C# HttpHelper,帮助类,真正的Httprequest请求时无视编码,无视证书,无视Cookie,网页抓取 1.第一招,根据URL地 ...

随机推荐

  1. Thread.currentThread().getName() ,对象实例.getName() 和 this.getName()区别

    原文链接:http://www.cnblogs.com/signheart/p/922dcf75dd5fe6b418d4475af89c4664.html 使用Thread.currentThread ...

  2. BZOJ1221 [HNOI2001]软件开发 - 费用流

    题解 非常显然的费用流. 但是建图还是需要思考的QuQ 将每天分成两个节点 $x_{i,1}, x_{i,2} $, $ x_{i,1}$用于提供服务, $x_{i ,2}$ 用来从源点获得$nd[i ...

  3. Geodetic集合

    图G是一个无向连通图,没有自环,并且两点之间至多只有一条边.我们定义顶点v,u最短路径就是从v到u经过边最少的路径.所有包含在v-u的最短路径上的顶点被称为v-u的Geodetic顶点,这些顶点的集合 ...

  4. QTextCodec 类

    https://blog.csdn.net/qq_23948025/article/details/45500637

  5. hdu-1116(欧拉回路+并查集)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1116 思路:将字符串的头元素和尾元素视为图的x,y节点,然后合并x,y. 如果这个图不连通,则门不能打 ...

  6. hdu-1067(最大独立集)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1068 题意:一个男生集合和一个女生集合,给出两个集合之间一一对应的关系,求出两个集合中最大独立集的点数 ...

  7. APMServ—优秀的PHP集成环境工具

    经常折腾wordpress和各种php开发的cms,免不了要在本地测试这些程序,所以选择一款好的php集成环境就至关重要啦.之前在月光博客上看到有一篇“常见的WAMP集成环境”介绍,然后先后试用过XA ...

  8. 学习前端的菜鸡对JS 的classList理解

    classList 在早期的时候要添加,删除类 需要用className去获取,然后通过正则表达式去判断这个类是否存在. 代码上去会有点麻烦,现在有了classList 就方便了很多. ——————— ...

  9. webuploader在ie7下的flash模式的使用

    webuploader在ie7下不能使用h5模式上传图片,只能使用flash模式. 但是出现了几个问题:(1)必须正确的引入.swf文件,才能使webuploader正常运行             ...

  10. swagger 入门

    官网:http://swagger.io/ Swagger UI 下载地址: https://github.com/swagger-api/swagger-ui 文档:README.md ### Do ...