【C++】实用socket编程 获取网页html信息
// Socket1.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include<winsock.h>
#include<stdio.h>
#include<string>
#include<iostream>
using namespace std;
#define WSWENS MAKEWORD(2,0)
int _tmain(int argc, _TCHAR* argv[])
{
sockaddr_in sin;
WSADATA wsadata;
//WSAStartup()的调用方和Windows Sockets DLL互相通知对方它们可以支持的最高版本,
//并且互相确认对方的最高版本是可接受的. 在WSAStartup()函数的入口,
//Windows Sockets DLL检查了应用程序所需的版本.如果版本高于DLL支持的最低版本,
//则调用成功并且DLL在wHighVersion中返回它所支持的最高版本,
//在 wVersion中返回它的高版本和wVersionRequested中的较小者.
//然后Windows Sockets DLL就会假设应用程序将使用wVersion.
if(WSAStartup(WSWENS,&wsadata)!=0)
cout<<"startup failed"<<endl;
SOCKET s = socket(PF_INET,SOCK_STREAM,0);
// memset 是对一段内存空间全部设置为某个字符
memset(&sin,0,sizeof(sin));
sin.sin_family = AF_INET;
sin.sin_port = htons(80);
//sin.sin_addr.S_un.S_addr=inet_addr("203.208.37.99");
hostent* hptr = gethostbyname("www.google.cn");
// 将有参数的string内容copy到左边参数
memcpy(&sin.sin_addr.S_un.S_addr,hptr->h_addr,hptr->h_length);
printf("IP address:%d.%d.%d.%d\n",sin.sin_addr.S_un.S_un_b.s_b1,
sin.sin_addr.S_un.S_un_b.s_b2,
sin.sin_addr.S_un.S_un_b.s_b3,
sin.sin_addr.S_un.S_un_b.s_b4);
// 将sockaddr_in transfer to sockaddr
if(connect(s,(sockaddr*)&sin,sizeof(sin)))
{
cout<<"connect failed"<<endl;
return 0;
}
else
{
cout<<"connect success"<<endl;
}
char buffersend[]="GET/HTTP1.1\nHOST:www.google.cn\nconnection:close\n\n";
send(s,buffersend,strlen(buffersend),0);
/*string ss;
int len = recv(s,const_cast<char*>(ss.c_str()),2000,0);*/
char bufferecv[10240];
int len=recv(s,bufferecv,10240,0);
printf("the length of page is %d\n", len);
相关文档:
刚刚看过这篇《30 years of C》,回想了这几年的学习历程。
在大学里,我学习的第一门程序设计语言是C,但花时间最多的还是C++。大约五年前,开始啃《 C++编程思想》两卷本,用Dev-cpp在机器练习着书上的一个个例子程序,之后又学习了面向对象编程、STL、模板。凭着 ......
许多编程语言中的调用函数的两种方法是按值调用(call-by-value)和按引用调用(call-by-reference)。
参数按值调用传递时,生成参数值副本并且传给被调用函数,副本的改变并不影响调用者的原始变量值,这样就可以防止意外的副作用影响开发正确,可靠的系统。按值调用的一个缺点是,如果传递较大的数据项,则复制这个数 ......
C程序是由一组或是变量或是函数的外部对象组成的。 函数是一个自我包含的完成一定相关功能的执行代码段。下面小编和大家分享下C语言中的函数。
1. sopen函数
sopen函数的功能是打开一共享文件,其用法为:int sopen(char *pathname, int access, int shflag, int permiss);程序实例如下:
#include ......
中文的编码常用的有3种格式:1)gb2312(就是ascii码方式,也说ansi) 2)unicode 3)utf-8
c++一般采用ancii码,而java一般采用unicode,而SymbianC++(以后简称symbian)采用unicode或utf-8
比如汉字“好”: unicode为“7D 59”,而ascii为“BA C3”, utf-8编码为3个字节。
终端你 ......