winsock2获取网页
#define WIN32_LEAN_AND_MEAN
#include <winsock2.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <vector>
#define uchar unsigned char
#define DEFAULT_PORT 80
#define DEFAULT_PROTO SOCK_STREAM // TCP
int fun();
int main(int argc, char **argv) {
fun();
    return 0;
}
int fun()
{
	static char Buffer[1024*1024]={0};
	char server_name[256]= "www.163.com";
	int retval, loopflag=0;
	int  loopcount,maxloop=-1;
int socket_type = DEFAULT_PROTO;
struct sockaddr_in cli_addr;
WSADATA wsaData;
	if (WSAStartup(0x202,&wsaData) == SOCKET_ERROR) {
		fprintf(stderr,"WSAStartup failed with error %d\n",WSAGetLastError());
		WSACleanup();
		return -1;
	}
	SOCKET cli_sock=socket(PF_INET,SOCK_STREAM,0);
	if (cli_sock==INVALID_SOCKET){
		//MessageBox (0,"create socket Error", 0, MB_OK);
		return -1;
	}
	// connect to server
	unsigned short netshort;
	if(WSAHtons(cli_sock, DEFAULT_PORT, &netshort))
	{
		//::MessageBox(0, "port error, can't convert address", 0, MB_OK);
		return -1;
	}
hostent* he = NULL;
	if ( (he = gethostbyname("www.163.com")) == NULL)
	{
		//::MessageBox(0, "gethostbyname error", 0, MB_OK);
		return -1;
	}
struct sockaddr_in    srv_addr;
	srv_addr.sin_family = AF_INET;
	//srv_addr.sin_addr.s_addr = inet_addr("42.81.5.76"); 
	memcpy(&srv_addr.sin_addr, he->h_addr_list[0], he->h_length);
	srv_addr.sin_port= netshort;
if (connect(cli_sock,(LPSOCKADDR)&srv_addr,sizeof(srv_addr))==SOCKET_ERROR){
		wchar_t errtxt[64];
		wsprintf(errtxt, L"connection failed\nserver: %s, port: %d,error =%d\n", server_name, DEFAULT_PORT , WSAGetLastError());
		//printf ( errtxt);
		return -1;
	}
char sz[]="GET /index.html HTTP/1.1\r\nHost:www.163.com\r\n\r\n";//发送http请求,关键就在这里
	retval = send(cli_sock,sz,sizeof(sz)-1,0);
	if( SOCKET_ERROR == retval )
		return 0;
	char buffer[1024]={0};
	while( SOCKET_ERROR != retval ){
		retval = recv(cli_sock ,buffer,1000,0);//接受数据
		printf("%s\n",buffer);
	}
closesocket(cli_sock);
	WSACleanup();
	return 1;
}
winsock2获取网页的更多相关文章
- telnet建立http连接获取网页HTML内容
		利用telnet可以与服务器建立http连接,获取网页,实现浏览器的功能.它对于需要对http header进行观察和测试到时候非常方便.因为浏览器看不到http header. 步骤如下: 1. 运 ... 
- C#获取网页的HTML码、下载网站图片、获取IP地址
		1.根据URL请求获取页面HTML代码 /// <summary> /// 获取网页的HTML码 /// </summary> /// <param name=" ... 
- Java 网络爬虫获取网页源代码原理及实现
		Java 网络爬虫获取网页源代码原理及实现 1.网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成.传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL ... 
- c#利用WebClient和WebRequest获取网页源代码的比较
		前几天举例分析了用asp+xmlhttp获取网页源代码的方法,但c#中一般是可以利用WebClient类和WebRequest类获取网页源代码.下面分别说明这两种方法的实现. WebClient类获取 ... 
- 【转】如何在Windows+VS2005使用最新静态libcurl 7.35.0获取网页数据,支持HTTPS
		地址: http://blog.csdn.net/hujkay作者:Jekkay Hu(34538980@qq.com)关键词:Windows,curl,ssl, visual c++ 2005, ... 
- C语言之socket获取网页源码
		写爬虫也许你用的是python,类似urlopen(url).read()即可获得普通的网页的源码,或者用的java的网络库加上流操作,或者其他高级语言.但你有没有想过使用C语言来实现呢?我曾经以为用 ... 
- WebRequest 获取网页乱码
		问题:在用WebRequest获取网页源码时得到的源码是乱码. 原因:1,编码不对 解决办法:设置对应编码 WebRequest request = WebRequest.Create(Url);We ... 
- php正则获取网页标题、关键字、网页描述代码
		php正则获取网页关键字,代码如下: function get_keywords($html) { $html=strtolower($html); preg_match("@<hea ... 
- C# HttpWebRequest 绝技 根据URL地址获取网页信息
		如果要使用中间的方法的话,可以访问我的帮助类完全免费开源:C# HttpHelper,帮助类,真正的Httprequest请求时无视编码,无视证书,无视Cookie,网页抓取 1.第一招,根据URL地 ... 
随机推荐
- python 推导式和迭代器、生成器
			1.常用推导式 推导式是从一个或者多个迭代器快速简洁创建数据结构的一种方法. 1.1 _ 列表推导式 最简单的形式: [exprssion for item in iterable] 示例: nu ... 
- 字符串-06. IP地址转换
			/* * Main.c * D6-字符串-06. IP地址转换 * Created on: 2014年8月19日 *******测试通过******** *转载:http://blog.csdn.ne ... 
- RHEL6.4 NFS文件共享服务搭建
			NFS文件共享服务 1 实验方案 使用2台RHEL6.4虚拟机,其中一台作为NFS共享服务器(192.168.100.1).另外一台作为测试用的NFS客户机(192.168.100.2) 2.实现 2 ... 
- ComboBox控件绑定数据源
			最近在研究机房收费系统的组合查询的方法时,看到了ComboBox控件可以进行数据绑定,我觉得这个功能真的很不错,可以给我省去很多的麻烦. 下面是我组合查询窗体界面 一.数据转换方法 现在我们开看一下我 ... 
- IOS开发笔记  IOS如何访问通讯录
			IOS开发笔记 IOS如何访问通讯录 其实我是反对这类的需求,你说你读我的隐私,我肯定不愿意的. 幸好ios6.0 以后给了个权限控制.当打开app的时候你可以选择拒绝. 实现方法: [plain] ... 
- HDU 4326Game(比较难理解的概率dp)
			Game Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Subm ... 
- Use Excel to write insert SqlScript
			="insert into Process.dbo.TempHampInGoodStandingLoanList (Loan_No,ProgramType,ModificationEffec ... 
- 2015.8.3  Java
			今天继续学习Java 用的是eclipse IDE 这个ide怪怪的,但是有一个很方便的功能 就是通过右键选择source 可以点击Generate Getters and Setters生成属性的 ... 
- XGPush集成(信鸽集成)demo
			#import "AppDelegate.h" #import "XGPush.h" #import "XGSetting.h" #defi ... 
- JavaSE_ 多线程 总目录(23~24)
			JavaSE学习总结第23天_多线程123.01 多线程程序的引入23.02 进程概述及多进程的意义23.03 线程概述及多线程的意义23.04 并行和并发的区别23.05 Java程序运行原理和JV ... 
