C语言使用socket获取网页内容
来源:互联网 发布:瓷砖上铺木地板 知乎 编辑:程序博客网 时间:2024/05/21 10:41
本文讨论的是使用C语言使用socket获取网页内容
首先需要添加代码
#pragma comment(lib, "ws2_32.lib")
以下是获取网页内容的函数。函数参数为网页地址,字符串类型,如“www.baidu.com”。获取到的网页内容保存在recieved.txt文件中。
void ReadPage(char* host){WSADATA data;//winsock版本2.2int err = WSAStartup(MAKEWORD(2, 2), &data);if (err)return ;//用域名获取对方主机名struct hostent *h = gethostbyname(host);if (h == NULL)return ;//IPV4if (h->h_addrtype != AF_INET)return ;struct in_addr ina;//解析IPmemmove(&ina, h->h_addr, 4);LPSTR ipstr = inet_ntoa(ina);//Socket封装struct sockaddr_in si;si.sin_family = AF_INET;si.sin_port = htons(80);si.sin_addr.S_un.S_addr = inet_addr(ipstr);int sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);connect(sock, (SOCKADDR*)&si, sizeof(si));if (sock == -1 || sock == -2)return ;//发送请求char request[1024] = "GET /?st=1 HTTP/1.1\r\nHost:";strcat(request, host);strcat(request, "\r\nConnection:Close\r\n\r\n");int ret = send(sock, request, strlen(request), 0);//获取网页内容FILE *f = fopen("recieved.txt", "w");int isstart = 0;while (ret > 0){const int bufsize = 1024;char* buf = (char*)calloc(bufsize, 1);ret = recv(sock, buf, bufsize - 1, 0);fprintf(f, "%s", buf);free(buf);}fclose(f);closesocket(sock);WSACleanup();printf("读取网页内容成功,已保存在recieved.txt中");return ;}
注:本函数只适用于IPV4的http请求。
保存的txt文件用记事本打开时,请将编码改为utf8,而不是默认的ASCII,否则会出现中文乱码。
调用这个函数的一个例子:
ReadPage("www.baidu.com")
在获取了网页信息后,可以使用C++的Regex进行分析。
文中所涉及的所有代码均在Visual Studio 2015中通过。
0 0
- C语言使用socket获取网页内容
- socket获取网页内容
- socket获取网页内容
- 获取网页内容 C和php通过socket进行通信
- 利用socket获取网页内容
- java socket 获取网页内容
- Linux下C语言用socket获取网页源码…
- Linux下C语言用socket获取网页源码
- 使用php获取网页内容
- 使用MFC获取网页内容
- 使用php获取网页内容
- 使用HttpURLConnection获取网页内容
- 使用cURL获取网页内容
- gprs连接成功以后,如何通过socket获取网页html内容(C#)
- C语言使用socket通过IP138获取外网IP
- c语言获取文件内容
- (原创)socket学习实验(一)——利用C 语言socket抓取一个网页内容
- 获取网页内容的代码(C#)
- Android从入门到精通第11章:Content Provider实现数据共享
- Unity手机优化注意点
- 用java对密码进行MD5加密
- php通过两个地点经纬度求距离
- LeetCode(124) Binary Tree Maximum Path Sum
- C语言使用socket获取网页内容
- Android三步显示gif动态图片
- 程序设计语言(脑图)
- 关于小公司的空降兵和空降兵的出路
- 关于APK第一次安装后按Home键出现的问题
- 鸟哥笔记——关于变量的基本配置
- 获取手机所有应用程序的信息
- 编写函数计算n的阶乘(n<10),n为函数参数。在main函数中调用该函数计算1!+2!+……+n!
- Android 4.4 Kitkat Phone工作流程浅析(一)__概要和学习计划