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;
}

时间: 2024-10-15 15:47:08

winsock2获取网页的相关文章

获取网页上数据(图片、文字、视频)-b

Demo地址:http://download.csdn.net/detail/u012881779/8831835 获取网页上所有图片.获取所有html.获取网页title.获取网页内容文字... .h 文件  代码: //网页   //NSString *strPath = [NSString stringWithFormat:@"http://www.baidu.com/s?wd=%@&cl=3",theWord];   //视频   //NSString *strPath

在获取网页时半角全角字符混合的问题

在获取网页数据时,遇到一个问题.获取的数据在解析成中文时由于字符中包含半角和全角的字符,总是不能全部显示正确.一开始总想有什么解析方法可以用来处理这种数据.网页本身是utf-8格式,按理来说不应该有这个问题.后来发现是Dotnet中WebClient类默认会将中文转成gb2312.此时与原始的utf-8的数据相比,数据已有丢失,所以我判断再怎么恢复也不行(但不确定).那WebClient有该属性配置么?果然!将Encoding属性设为utf-8就从头上解决了这个问题.回想之前在用扫码仪获取二维码

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

public String getWebData(String strUrl){ String json = null; try { URL url = new URL(strUrl); HttpURLConnection conn = (HttpURLConnection) url.openConnection();// 利用HttpURLConnection对象获取网页数据. conn.setConnectTimeout(3 * 1000); // 设置超时时间为3秒 conn.setReq

php获取网页中图片与DIV内容实例

分享下php获取网页中图片.DIV内容的简单方法,都是通过正则表达式实现的. 1.获取网页中所有的图片: <?php //取得指定位址的內容,并储存至 $text $text=file_get_contents('http://www.jbxue.com/'); //取得所有img标签,并储存至二维数组 $match 中 preg_match_all('/<img[^>]*>/i', $text, $match); //打印出match print_r($match); ?>

JS获取网页中HTML元素的几种方法分析

getElementById getElementsByName getElementsByTagName 大概介绍 getElementById ,getElementsByName ,getElementsByTagName ###adv### 后两个是得到集合,byid只是得到单个对象 getElementById 的用法 举个例子: <a id="link1" name="link1" href=http://homepage.yesky.com>

js获取网页的各种高度

网页可见区域宽: document.body.clientWidth网页可见区域高: document.body.clientHeight网页可见区域宽: document.body.offsetWidth (包括边线的宽)网页可见区域高: document.body.offsetHeight (包括边线的高)网页正文全文宽: document.body.scrollWidth网页正文全文高: document.body.scrollHeight网页被卷去的高: document.body.sc

用EXCEL批量获取网页标题的方法

这段时间准备做淘宝,但不知道卖什么产品,因此想从一些B2B 网站上扒拉一些产品词下来挨个研究,但一个一个的打开网页查看产品太慢太费事,但想到这些产品词都存在于网页标题上,因此想到了用excel来批量获取网页的标题.经过一番查找,在网上找到了两种方法(其实是两组代码). 打开excel找到开发者工具,点击"Visual Basic" 在下图所示位置右键点击添加模块 填入如下代码: Function Title(url As String) As String With CreateObj

java 如何获取网页的动态内容,并解析网页内容

(笔记) 获取网页的动态内容参考 https://pastebin.com/raw/FePkm2kp Maven: <!--获取网页源码,包括动态内容--><dependency> <groupId>htmlunit</groupId> <artifactId>htmlunit</artifactId> <version>1.14</version></dependency> 实现: WebClie

POST教程笔记 - WinHttp获取网页源码

①.WinINet与WinHttp的异同点,为什么使用WinHttp讲解? 详情见:<WinINet与WinHttp总结>文档,已经打包给大家了. ②.WinHttp接口调用方式:微软官方地址:http://msdn.microsoft.com/en-us/ ... 84263(v=vs.85).aspxWinHttp微软提供了两种调用方式:C++调用API的版本.COM组件的版本.这里面使用的是 C++ Interface 接口的组件的方式来给大家讲解. ③.WinHttp常用命令讲解:详情