【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);
相关文档:
C程序是由一组或是变量或是函数的外部对象组成的。 函数是一个自我包含的完成一定相关功能的执行代码段。下面小编和大家分享下C语言中的函数。
1. setallpallette函数
setallpallette函数的功能是按指定方式改变所有的调色板颜色,其用法为:void far setallpallette(struct palette, fa ......
C程序是由一组或是变量或是函数的外部对象组成的。 函数是一个自我包含的完成一定相关功能的执行代码段。下面小编和大家分享下C语言中的函数。
1. setfillpatterne函数
setfillpatterne函数的功能是选择用户定义的填充模式,其用法为:void far setfillpattern(char far *upattern, int ......
#include <stdio.h>
int main()
{
char *str[] = {"welcome", "to", "fortemedia", "nanjing"};
char **p = str + 1;
str[0] = ( *p++ ) + 2;
str[1] = * ( p + 1 );
str[2] = p[1] + 3;
str[3] = p[0] + ( str[2] - str[1] );
printf ( "%s\n", str[0] );
printf ( ......
C程序是由一组或是变量或是函数的外部对象组成的。 函数是一个自我包含的完成一定相关功能的执行代码段。下面小编和大家分享下C语言中的函数。
1. setvect函数
setvect函数的功能是设置中断矢量入口,其用法为:void setvect(int intr_num, void interrupt(*isr)());程序实例如下:
#include <st ......
转自:http://dev.yesky.com/471/2306471.shtml
1.引言
本文的写作目的并不在于提供C/C++程序员求职面试指导,而旨在从技术上分析面试题的内涵。文中的大多数面试题来自各大论坛,部分试题解答也参考了网友的意见。
许多面试题看似简单,却需要深厚的基本功才能给出完美的解答。企业要求面试者写一个最简单的st ......