亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? client.cpp

?? VC++語言中級教材,講授網絡編程中語言的運用技術
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
//Extract all pictures in a url
//by caucy 2005.12.5
#include "stdafx.h"
#include "Client.h"
#include <winsock2.h>
#include <afxsock.h>
#include <assert.h>
#include <stdlib.h>
#include <iostream>
#include <fstream>
#include <string>
#include <time.h>
#include <VECTOR>
#include <sys/TIMEB.H>

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

using namespace std;

#define BUFFER_BLOCK_SIZE 4096
#define DEAL_SOCK_ERROR(retCode,sock)	if((retCode)==SOCKET_ERROR || (retCode)==0)\
										{										\
											cout<<"Sock error: "<<GetLastError()<<endl;\
											closesocket(sock);					\
											return -1;							\
										}
//Auxiliary Functions
int HttpRequest();
u_long ConvertHostnameToLongHostAddress(const char * destAddress);
void RenameFileName(string& filename);
void GivenUniqueFileName(const string& dir,
					const string& subject,
					string& name,
					string postfix);
void SplitURLToHostAndSubURL(const string& url, string& hostname, string& suburl);
void SplitURLToNameAndPostfix(string& src, string& name, string& postfix);

//Agent Application Functions
int GetHTML(const string& proxyServerName,
			 UINT proxyServerPort,
			 const string& proxyUser,
			 const string& proxyPass,
			 const string& serverHostName,	 
			 UINT serverPort,
			 string& url);
int GetImage(const string& proxyServerName,
			 UINT proxyServerPort,
			 const string& proxyUser,
			 const string& proxyPass,
			 const string& serverHostName,	 
			 UINT serverPort,
			 string& url,
			 string& filename);
void GetStartString(string& str, string& startStr);
BOOL FilterStartTag(string& str, const string& tag);
BOOL FilterSourceImageURL(string& body, string& url);
void EncodingBase64(const char* src, char* des);

int Socks5StartIPv4(const string& proxyServerHostName,
				u_int proxyServerPort,
				const string& username, 
				const string& pass,
				u_long destAddress,
				u_int destPort,
				SOCKET& sock);
int HttpProxyStart(const string& proxyServerHostName,
				u_int proxyServerPort,  
				const string& username, 
				const string& pass,
				u_long destAddress,
				u_int destPort,
				SOCKET& sock);

#define INTEREST_IMAGE_TYPE_COUNT 2
char *gInterestImagePostfix[]={"jpg","bmp"};


int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
	HttpRequest();
	return 0;
}

int HttpRequest()
{
	//URL
	string url;
	string serverHostName;
	string suburl;
	UINT serverPort=80;

	//proxy
	string proxyServerName;
	UINT proxyServerPort;
	string proxyUser;
	string proxyPass;

 	SplitURLToHostAndSubURL(url, serverHostName, suburl);
	if(url.find("http:/",0)==string::npos)
	{
		url=string("http://")+url;
	}
	if(suburl=="/")
	{
		if(url.find_last_of('/',url.length())!=url.length()-1)
			url+="/";
	}
	
	WSADATA wsaData;
	if(WSAStartup(MAKEWORD( 2, 2 ), &wsaData)!=0)
		cerr<<"socket init error"<<endl;

	if(GetHTML(proxyServerName,proxyServerPort,proxyUser,proxyPass,
					serverHostName,serverPort,url)==-1)
		cout<<"Unsuccessfully request."<<endl;
	return 0;
}

int ConnectToServer(const string& proxyServerName, UINT proxyServerPort,
			 const string& proxyUser, const string& proxyPass,
			 const string& serverHostName, UINT serverPort, SOCKET& sock)
{
	sockaddr_in serverAddr;
	hostent * host;

	if(proxyServerName.length()!=0)//using socks5 proxy
	{
		u_long addr=ConvertHostnameToLongHostAddress(serverHostName.c_str());
//		if(Socks5StartIPv4(proxyServerName,proxyServerPort,proxyUser,proxyPass,addr,serverPort,sock)!=0)
		if(HttpProxyStart(proxyServerName,proxyServerPort,proxyUser,proxyPass,addr,serverPort,sock)!=0)
		{
			cerr<<"Proxy server error!"<<endl;
			return -1;
		}
	}
	else
	{
		host=gethostbyname(serverHostName.c_str());
		if(host==NULL)
		{
			cout<<"Cann't resolve this host name: "<<GetLastError()<<endl;
			return -1;
		}

		sock=socket(AF_INET, SOCK_STREAM,0);
		serverAddr.sin_addr=*(struct in_addr*)host->h_addr;
		serverAddr.sin_family=AF_INET;
		serverAddr.sin_port=htons(serverPort);
		cout<<"Connecting to "<<inet_ntoa(serverAddr.sin_addr)<<endl;
		cout.flush();
		if(connect(sock,(const sockaddr*)&serverAddr,sizeof(sockaddr))==SOCKET_ERROR)
		{
			cout<<"Cannot connect to Server: "<<serverHostName.c_str()<<endl;
			cout.flush();
			closesocket(sock);
			return -1;
		}
	}
	return 0;
}

int GetHTML(const string& proxyServerName,
			 UINT proxyServerPort,
			 const string& proxyUser,
			 const string& proxyPass,
			 const string& serverHostName,	 
			 UINT serverPort,
			 string& url)
{
	int retCode;
	SOCKET sock;
	string str;
	string::size_type pos;
	char buffer[BUFFER_BLOCK_SIZE+1];
	char filter[BUFFER_BLOCK_SIZE+1];
	string head,body;
	string filename;
	string imageurl, imagename, imagepostfix;
	char * p;

	if(ConnectToServer(proxyServerName, proxyServerPort,proxyUser,proxyPass,\
			 serverHostName, serverPort,sock)==-1)
		return -1;
	
	//1. GET Command
	sprintf(buffer,"GET %s HTTP/1.1\r\nHost: %s\r\n\r\n",url.c_str(),serverHostName.c_str());

	cout<<buffer;
	cout.flush();
	send(sock,buffer,strlen(buffer),0);
	while(1)
	{
		retCode=recv(sock,buffer,BUFFER_BLOCK_SIZE,0);
		if(retCode==0 || retCode==-1)
			break;
		buffer[retCode]='\0';
		cout<<buffer;
		cout.flush();
		str+=buffer;
	}

	//2. Split head / body information
	pos=0;
	if((pos=str.find("\r\n\r\n",pos))==string::npos)
		goto _FAIL;
	//head
	head=str.substr(0,pos+2);
	pos=0;
	p= new char[head.length()+1];
	strcpy(p,head.c_str());
	_strlwr(p);
	head=p;
	delete[] p;
	//body
	body=str.substr(pos+4,str.length()-(pos+4));
	if(body.length()==0)
		goto _FAIL;
	p= new char[body.length()+1];
	strcpy(p,body.c_str());
	_strlwr(p);
	body=p;
	delete[] p;
	
	//3. Filter request return code
	pos=head.find("\r\n",0);
	strcpy(buffer,head.substr(0,pos).c_str());
	head=string(head).substr(pos+2,head.length()-pos-1);
	if(sscanf(buffer,"%s%d",filter,&retCode)==-1 || retCode/100!=2)
		goto _FAIL;

	//4. Retrive all picture links
	while(FilterSourceImageURL(body,imageurl))
	{
		SplitURLToNameAndPostfix(imageurl,imagename,imagepostfix);
		for(int i=0; i<INTEREST_IMAGE_TYPE_COUNT; i++)
		{
			if(stricmp(imagepostfix.c_str(),gInterestImagePostfix[i])==0)
			{
				//FilterStartTag(imageurl,"http:/");
				string newhostname,suburl;
				if(imageurl.find("http:/",0)!=string::npos)
				{
					SplitURLToHostAndSubURL(imageurl, newhostname, suburl);
				}
				else
				{
					newhostname=serverHostName;
					pos=url.find_last_of('/',url.length());
					suburl=url.substr(0,pos+1);
					suburl=suburl+imageurl;
				}
				GetImage(proxyServerName, proxyServerPort, proxyUser,proxyPass, newhostname, serverPort, suburl,imageurl);
			}
		}
	}
	return 0;
_FAIL:
	return -1;
}

int GetImage(const string& proxyServerName,
			 UINT proxyServerPort,
			 const string& proxyUser,
			 const string& proxyPass,
			 const string& serverHostName,	 
			 UINT serverPort,
			 string& url,
			 string& filename)
{
	int retCode;
	SOCKET sock;
	string::size_type pos;
	char buffer[BUFFER_BLOCK_SIZE+1];
	char filter[BUFFER_BLOCK_SIZE+1];
	string head;
	int contentLength,fileLength;
	int tag;
	ofstream file;
	BOOL bProcessHead=TRUE;
	char *p;
	if(ConnectToServer(proxyServerName, proxyServerPort,proxyUser,proxyPass,\
			 serverHostName, serverPort,sock)==-1)
		return -1;
	GivenUniqueFileName("",string(filename),filename,"");
	file.open(filename.c_str(),ios::binary);
	assert(!file.fail());

	//1. GET Command
	sprintf(buffer,"GET %s HTTP/1.1\r\nHost: %s\r\n\r\n",url.c_str(),serverHostName.c_str());
	cout<<buffer;
	cout.flush();
	send(sock,buffer,strlen(buffer),0);
	contentLength=0;
	while(1)
	{
		retCode=recv(sock,buffer,BUFFER_BLOCK_SIZE,0);
		if(retCode==-1)
		{
			closesocket(sock);
			return -1;
		}
		if(retCode==0)
			break;
		if(bProcessHead)
		{
			buffer[retCode]='\0';
			cout<<buffer;
			cout.flush();
			strcpy(filter,buffer);
			_strlwr(filter);
			head+=filter;
			if((pos=head.find("\r\n\r\n",0))!=string::npos)
			{
				pos=head.find("\r\n",0);
				strcpy(filter,head.substr(0,pos).c_str());
				if(sscanf(string(filter).c_str(),"%s%d",filter,&tag)==-1 || tag/100!=2)
				{
					closesocket(sock);
					return -1;
				}
				strcpy(filter,"\r\ncontent-length:");
				if((p=strstr(head.c_str(),filter))!=NULL)
				{
					p+=strlen(filter);
					strcpy(filter,p);
					if(sscanf(filter,"%d",&fileLength)==-1)
					{
						closesocket(sock);
						return -1;
					}
					cout<<"File length: "<<fileLength<<endl;
					cout.flush();
				}
				bProcessHead=FALSE;
				pos=head.find("\r\n\r\n",0);
				contentLength=pos+4-contentLength;
				file.write(buffer+contentLength,retCode-contentLength);
				fileLength-=(retCode-contentLength);
			}
			else
				contentLength+=retCode;
		}
		else
		{
			cout<<".";
			cout.flush();
			file.write(buffer,retCode);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩午夜在线影院| 亚洲区小说区图片区qvod| 久久亚洲私人国产精品va媚药| 久久亚区不卡日本| 亚洲色图一区二区三区| 成人一区二区视频| 免费看欧美美女黄的网站| 国产精品资源在线看| 色狠狠综合天天综合综合| 99精品欧美一区二区蜜桃免费| 欧美丝袜第三区| 久久久久久久久久久久久久久99| 亚洲美女屁股眼交| 精品一区二区免费在线观看| 日本亚洲一区二区| 成人aa视频在线观看| 喷水一区二区三区| 国产精品一区二区三区99| 亚洲欧美日韩中文播放 | 奇米影视在线99精品| 成人av资源在线观看| 在线中文字幕一区二区| 国产偷国产偷精品高清尤物| 2021中文字幕一区亚洲| 亚洲一区在线观看网站| 一区二区三区中文在线观看| 精品一区二区三区在线播放视频| 蜜臀av性久久久久av蜜臀妖精| 日韩精彩视频在线观看| av福利精品导航| 91麻豆免费观看| 色噜噜狠狠色综合欧洲selulu| 91一区一区三区| 6080午夜不卡| 69久久夜色精品国产69蝌蚪网| 亚洲视频在线一区| 一区二区三区色| 成人午夜免费视频| 色综合久久99| 中文字幕在线一区| 国产成人精品午夜视频免费| 成人动漫一区二区三区| 久久老女人爱爱| 亚洲老妇xxxxxx| 91影院在线观看| 欧美日韩精品一区二区天天拍小说| 91麻豆精品国产91久久久久| 欧美一级在线视频| 亚洲国产精品成人综合色在线婷婷| 中文字幕在线不卡一区二区三区| 国产乱码精品一区二区三区忘忧草 | 亚洲精品免费在线| 91免费观看视频在线| 中文一区一区三区高中清不卡| 韩国女主播成人在线| 99精品国产99久久久久久白柏| 亚洲精品在线网站| 欧美精选午夜久久久乱码6080| 亚洲一卡二卡三卡四卡五卡| 在线看一区二区| 欧美日韩综合在线免费观看| 精品久久久久久久人人人人传媒 | 一区视频在线播放| 亚洲6080在线| 麻豆精品在线视频| 久久久99久久| 亚洲一区二区中文在线| 国模套图日韩精品一区二区| 国产欧美一区视频| 日本一区二区成人在线| 99久久99久久精品国产片果冻| 最新高清无码专区| 日本久久精品电影| 久久综合久久综合亚洲| 亚洲天天做日日做天天谢日日欢 | 精品黑人一区二区三区久久| 99国产精品久久久久久久久久| 欧美国产日韩在线观看| 91精品国产综合久久精品app| 一区二区三区精品视频在线| 色综合视频在线观看| 激情综合网av| 日韩欧美中文一区| 99久久99久久精品免费观看| 中文字幕一区二区三区不卡在线| 69堂精品视频| 日韩精品免费视频人成| 中文字幕av一区 二区| 成人黄色av网站在线| 美女国产一区二区| 亚洲电影欧美电影有声小说| 欧美高清在线精品一区| 2021久久国产精品不只是精品| 欧美日韩一区在线| 91玉足脚交白嫩脚丫在线播放| 专区另类欧美日韩| 日本一区二区三区四区在线视频| 欧美日韩精品三区| 欧美在线一二三四区| 99国产精品一区| 成人av电影免费在线播放| 国产酒店精品激情| 国内精品视频一区二区三区八戒| 首页国产欧美久久| 亚洲成人你懂的| 一区二区三区在线视频免费| 91在线无精精品入口| 东方aⅴ免费观看久久av| 久久精品免费看| 麻豆精品一区二区| 人妖欧美一区二区| 国产日韩影视精品| 久久综合色天天久久综合图片| 欧美一区二区成人6969| 成人av在线资源网站| av在线这里只有精品| 99久久久久久99| 97se亚洲国产综合自在线| 成人av在线一区二区三区| 亚洲国产成人91porn| 夜色激情一区二区| 亚洲与欧洲av电影| 国产视频不卡一区| 欧美亚洲日本一区| 国产精品一区二区三区99| 国产精品1024| av一区二区不卡| 91国产丝袜在线播放| 欧美日韩一区高清| 粉嫩高潮美女一区二区三区 | 久久精品夜夜夜夜久久| 欧美精品一区二区三区高清aⅴ| 精品久久一区二区三区| 色视频欧美一区二区三区| 久久精品国产亚洲高清剧情介绍| 综合久久国产九一剧情麻豆| 亚洲裸体xxx| 亚欧色一区w666天堂| 中文字幕巨乱亚洲| 亚洲精品中文字幕乱码三区| 国产欧美一区二区三区在线看蜜臀| 国产欧美精品一区| 亚洲靠逼com| 蜜桃91丨九色丨蝌蚪91桃色| 国产成人综合在线| 另类小说综合欧美亚洲| 成人性生交大片免费看中文| 91久久一区二区| 99视频超级精品| 欧美日韩亚洲综合一区| fc2成人免费人成在线观看播放| 色88888久久久久久影院野外| 日韩免费一区二区三区在线播放| 欧美艳星brazzers| 精品国产凹凸成av人网站| 综合分类小说区另类春色亚洲小说欧美| 欧美成人性战久久| 日韩伦理av电影| 美女一区二区三区在线观看| 亚洲成人精品影院| 亚洲国产精品嫩草影院| 极品少妇xxxx精品少妇| 在线看日韩精品电影| 在线视频国内自拍亚洲视频| 精品电影一区二区| 亚洲成在人线在线播放| 成人午夜视频网站| 国产一区二区精品在线观看| 91福利资源站| 欧美日韩午夜影院| 国产精品久久久久久久久免费丝袜| 国产欧美一区二区在线观看| 日韩中文欧美在线| 91麻豆精品秘密| 欧美亚洲禁片免费| 精品视频123区在线观看| 欧美韩国一区二区| 一区在线观看免费| 国产精品99精品久久免费| 风间由美性色一区二区三区| 欧美一级二级三级乱码| 日韩精品专区在线影院重磅| 亚洲综合清纯丝袜自拍| 成人黄色国产精品网站大全在线免费观看| 69av一区二区三区| 有码一区二区三区| 一区二区三区在线高清| 亚洲精品视频在线看| 日韩黄色片在线观看| 极品少妇一区二区三区精品视频| 国产成a人无v码亚洲福利| 精品区一区二区| 裸体健美xxxx欧美裸体表演| 欧美精品xxxxbbbb| 亚洲成人777| 国产剧情av麻豆香蕉精品| 久久夜色精品一区| 亚洲精品欧美综合四区| 91福利精品第一导航| 欧美一区二区日韩|