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

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

?? client.cpp

?? VC++語言中級教材,講授網絡編程中語言的運用技術
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
			fileLength-=retCode;
			if(fileLength==0)
				break;
		}
	}
	cout<<endl<<"File finished!"<<endl;
	file.close();
	closesocket(sock);
	return 0;
}

/**********************************************************************************/
u_long ConvertHostnameToLongHostAddress(const char * destAddress)
{
	hostent * host=gethostbyname((const char *)destAddress);
	if(host==NULL)
	{
		cout<<"Cann't resolve this host name: "<<GetLastError()<<endl;
		return -1;
	}
	return ntohl((*(struct in_addr*)host->h_addr).S_un.S_addr);
}

int Socks5StartIPv4(const string& proxyServerHostName,
				u_int proxyServerPort,
				const string& username, 
				const string& pass,
				u_long destAddress,
				u_int destPort,
				SOCKET& sock)
{
	sockaddr_in serverAddr;
	int retCode;
	char buffer[BUFFER_BLOCK_SIZE];
	BYTE version=5;
	BYTE authorWay1=0;	//no authority
	BYTE authorWay2=2;	//user/pass authority
	int rsv=0;
	string addrStr;
	u_int t;
	
	sock=socket(AF_INET, SOCK_STREAM,0);
	serverAddr.sin_addr.S_un.S_addr=htonl(ConvertHostnameToLongHostAddress(proxyServerHostName.c_str()));
	serverAddr.sin_family=AF_INET;
	serverAddr.sin_port=htons(proxyServerPort);
	cout<<"Connecting to "<<inet_ntoa(serverAddr.sin_addr)<<"\tPort:"<<proxyServerPort<<endl;
	cout.flush();
	if(connect(sock,(const sockaddr*)&serverAddr,sizeof(sockaddr))==SOCKET_ERROR)
	{
		cout<<"Cannot connect to Server: "<<proxyServerHostName.c_str()<<endl;
		cout.flush();
		closesocket(sock);
		return -1;
	}

	//1. authoutication negotiation
	sprintf(buffer,"%c%c%c%c",version,2,authorWay1,authorWay2);
	send(sock,buffer,4,0);
	retCode=recv(sock,buffer,BUFFER_BLOCK_SIZE,0);
	DEAL_SOCK_ERROR(retCode,sock);
	if(char(retCode)==0xFF)
		return 1;
	buffer[retCode]='\0';
	cout<<buffer;

	//user/pass authentication
	if(buffer[1]==authorWay2)
	{
		//user name
		sprintf(buffer,"%c%c%s%c%s",char(0x01),char(username.length()),username.c_str(),
				char(pass.length()),pass.c_str());
		t=3+username.length()+pass.length();
		send(sock, buffer, t, 0);
		retCode=recv(sock,buffer,BUFFER_BLOCK_SIZE,0);
		DEAL_SOCK_ERROR(retCode,sock);
		if(char(retCode)==0xFF)
			return 1;
		buffer[retCode]='\0';
		if(buffer[1]!=0)
			return 1;
	}
	
	//1. authoutication negotiation
	addrStr=buffer;
	t=htons(destPort);
	sprintf(buffer,"%c%c%c%c%c%c%c%c%c%c",version,char(0x01),rsv,char(0x01),
		((char*)&destAddress)[3],((char*)&destAddress)[2],((char*)&destAddress)[1],((char*)&destAddress)[0],
		((char *)&t)[0],((char *)&t)[1]);
	cout<<buffer;
	send(sock,buffer,10,0);
	retCode=recv(sock,buffer,BUFFER_BLOCK_SIZE,0);
	DEAL_SOCK_ERROR(retCode,sock);
	buffer[retCode]='\0';
	if(buffer[1]!=0)
	{
		sprintf(buffer,"%x",buffer[1]);
		cout<<"Failure in negotiation: "<<buffer<<endl;
		return 1;
	}
	return 0;
}

//"CONNECT " + destaddr + ":" + destport + " HTTP/1.1" + "\r\n" + "Host: " + destAddr + ":" + destPort + "\r\n\r\n"
int HttpProxyStart(const string& proxyServerHostName,
				u_int proxyServerPort,  
				const string& username, 
				const string& pass,
				u_long destAddress,
				u_int destPort,
				SOCKET& sock)
{
	sockaddr_in serverAddr;
	int retCode;
	char buffer[BUFFER_BLOCK_SIZE];
	string addrStr;
	char destAddrStr[BUFFER_BLOCK_SIZE];

	sock=socket(AF_INET, SOCK_STREAM,0);
	serverAddr.sin_addr.S_un.S_addr=htonl(ConvertHostnameToLongHostAddress(proxyServerHostName.c_str()));
	serverAddr.sin_family=AF_INET;
	serverAddr.sin_port=htons(proxyServerPort);
	cout<<"Connecting to "<<inet_ntoa(serverAddr.sin_addr)<<"\tPort:"<<proxyServerPort<<endl;
	cout.flush();
	if(connect(sock,(const sockaddr*)&serverAddr,sizeof(sockaddr))==SOCKET_ERROR)
	{
		cout<<"Cannot connect to Server: "<<proxyServerHostName.c_str()<<endl;
		cout.flush();
		closesocket(sock);
		return -1;
	}

	//"CONNECT " + destaddr + ":" + destport + " HTTP/1.1" + "\r\n" + "Host: " + destAddr + ":" + destPort + "\r\n\r\n"
	serverAddr.sin_addr.S_un.S_addr=htonl(destAddress);
	strcpy(destAddrStr,inet_ntoa(serverAddr.sin_addr));
	sprintf(buffer,"CONNECT %s:%d HTTP/1.1\r\nHost: %s:%d\r\n",destAddrStr,destPort,destAddrStr,destPort);
	if(username.length())
	{
		//Encode username, pass using base64
		//Proxy-Authorization: Basic <base64-stuff> <CRLF>
		char t1[BUFFER_BLOCK_SIZE],t2[BUFFER_BLOCK_SIZE];
		EncodingBase64(username.c_str(),t1);
		EncodingBase64(pass.c_str(),t2);
		strcat(buffer,"Proxy-Authorization: Basic ");
		strcat(buffer,t1);
		strcat(buffer,":");
		strcat(buffer,t2);
		strcat(buffer,"\r\n");
	}
	strcat(buffer,"\r\n");
	send(sock,buffer,strlen(buffer),0);
	retCode=recv(sock,buffer,BUFFER_BLOCK_SIZE,0);
	DEAL_SOCK_ERROR(retCode,sock);
	buffer[retCode]='\0';
	sscanf(buffer,"%s%d",destAddrStr,&retCode);
	if(retCode/100!=2)
	{
		cout<<"Failure in negotiation: "<<buffer<<endl;
		return 1;
	}
	return 0;
}


void GivenUniqueFileName(const string& dir,
					const string& subject,
					string& name,
					string postfix)
{
	//if subject is NULL,
	WIN32_FIND_DATA FileData;
	HANDLE hSearch;
	char buffer[BUFFER_BLOCK_SIZE];
	int count=1;
	string curdir=".\\";
	string title=subject;
	RenameFileName(title);
	sprintf(buffer,"%s",postfix.c_str());
	while(1)
	{
		name=curdir+dir+"\\"+title+buffer;
		hSearch = FindFirstFile(name.c_str(), &FileData);
		if (hSearch == INVALID_HANDLE_VALUE)
			break;
		if(FileData.dwFileAttributes==FILE_ATTRIBUTE_DIRECTORY)
		{
			hSearch = FindFirstFile(name.c_str(), &FileData);
			if (hSearch == INVALID_HANDLE_VALUE)
				break;
		}
		sprintf(buffer,"(%d)%s",count++,postfix.c_str());
	}
	FindClose(hSearch);
}

void SplitURLToHostAndSubURL(const string& url, string& hostname, string& suburl)
{
	string::size_type pos=0;
	string str=url;
	//filter blank space
	while(str.find(' ',0)!=string::npos)
		str.replace(0,1,"");
	//filter http://
	if(str.find("http://",0)!=string::npos)
		str=str.substr(7,str.length()-7);
	//filter hostname and suburl
	if((pos=str.find('/',0))==string::npos)
	{
		hostname=str;
		suburl="/";
		return;
	}
	hostname=str.substr(0,pos);
	suburl=str.substr(pos,str.length()-pos);
}

void SplitURLToNameAndPostfix(string& src, string& name, string& postfix)
{
	string::size_type pos=0,apos=0;
	if(src[0]=='\'' && src[src.length()-1]=='\'' || src[0]=='"' && src[src.length()-1]=='"')
		src=string(src).substr(1,src.length()-2);
	if((pos=src.find_last_of('.',src.length()))==string::npos)
		pos=src.length();
	postfix=src.substr(pos+1,src.length()-pos);
	if((apos=src.find_last_of('/',src.length()))==string::npos)
		name=src.substr(0,pos);
	else
		name=src.substr(apos+1,src.length()-apos-postfix.length()-2);
}

BOOL FilterSourceImageURL(string& body, string& url)
{
	string::size_type pos,endpos;
	string str;
	while(1)
	{
		if((pos=body.find("<img ", 0))==string::npos)
			break;
		if((endpos=body.find(">", pos))==string::npos)
			break;
		url=body.substr(pos,endpos-pos+1);
		body=body.substr(endpos+1,body.length()-endpos);
		pos=0;
		endpos=0;
		if(FilterStartTag(url, "<img")==FALSE)
			continue;
		if((pos=url.find("src",0))==string::npos)
			continue;
		url=url.substr(pos,url.length()-pos);
		if(FilterStartTag(url, "src")==FALSE)
			continue;
		if(FilterStartTag(url, "=")==FALSE)
			continue;
		FilterStartTag(url, "\"");
		GetStartString(url,str);
		url=str;
		return TRUE;
	}
	return FALSE;
}

void GetStartString(string& str, string& startStr)
{
	//front blank space
	string::size_type pos=0;
	while(str.find(' ',0)==0)
		str.replace(0,1,"");
	if((pos=str.find('"',0))!=string::npos)
	{
		startStr=str.substr(0,pos);
		str=str.substr(pos+1,str.length());
	}
	else
	{
		pos=str.find(' ',0);
		if(pos==string::npos)
			pos=str.find('>',0);
		assert(pos!=string::npos);
		if(pos==string::npos)
		{
			startStr=str;
		}
		else
		{
			startStr=str.substr(0,pos);
			str=str.substr(pos+1,str.length()-pos);
		}
	}
}

BOOL FilterStartTag(string& str, const string& tag)
{
	//front blank space
	while(str.find(' ',0)==0)
		str.replace(0,1,"");
	if(str.find(tag,0)!=0)
		return FALSE;
	else
	{
		str=str.substr(tag.length(),str.length()-tag.length());
		while(str.find(' ',0)==0)
			str.replace(0,1,"");
		return TRUE;
	}
}

void RenameFileName(string& filename)
{
	char illegalChar[]="\\/:*?\"<>|";
	int i=0;
	string::size_type pos=0;
	while((pos=filename.find_first_of(illegalChar, pos))!=string::npos)
	{
		filename.replace(pos,1,"_");
	}
}

void EncodingBase64(const char* src, char* des)
{
	assert(src&&des);
	char sixbit_encoding[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
	while(*src!=NULL)
	{
		*des++=sixbit_encoding[(UCHAR)*src++>>2]; //6
		if(*src==NULL)
		{
			*des++=sixbit_encoding[(*(src-1)&0x3)<<4];//2+4
			*des++='=';
			*des++='=';
			break;
		}
		else
		{
			*des++=sixbit_encoding[(*(src-1)&0x3)<<4 | UCHAR(*src)>>4];//2+4
			src++;
		}
		if(*src==NULL)
		{
			*des++=sixbit_encoding[(*(src-1)&0xF)<<2];//4+2
			*des++='=';
		}
		else
		{
			*des++=sixbit_encoding[(*(src-1)&0xF)<<2 | UCHAR(*src)>>6];//4+2
			*des++=sixbit_encoding[*src&0x3F];//6
			src++;
		}
	}
	*des=NULL;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
粉嫩av一区二区三区粉嫩| 国产精品99久久久久久久女警 | 亚洲精品中文在线观看| 麻豆精品蜜桃视频网站| 91亚洲资源网| 国产调教视频一区| 五月综合激情日本mⅴ| 国产亚洲精品精华液| 国产丶欧美丶日本不卡视频| 日韩一区二区三区视频| 国产精品一区二区三区99| 日韩精品一区二区三区中文精品| 男人的j进女人的j一区| 国产+成+人+亚洲欧洲自线| 欧美日韩国产综合一区二区| 亚洲三级在线播放| 国产aⅴ精品一区二区三区色成熟| 欧美人伦禁忌dvd放荡欲情| 亚洲欧美日韩国产综合在线| 国产在线播放一区二区三区| 欧美一区二区美女| 午夜精品免费在线| 在线观看视频欧美| 一区二区三区中文免费| 99国产精品久久久| 亚洲欧洲av在线| 国产成人精品aa毛片| 国产色婷婷亚洲99精品小说| 精品一区二区三区久久久| 日韩精品一区二区三区在线| 亚洲欧洲日韩在线| 成人性视频免费网站| 国产色91在线| 成人一区在线观看| 中文字幕一区二区三区av| 国产成人午夜精品5599| 日韩一级在线观看| 狠狠色丁香婷婷综合| 日韩一区二区三区视频| 日韩和欧美一区二区三区| 日韩一二在线观看| 免费在线观看日韩欧美| 久久久亚洲精品石原莉奈 | 老色鬼精品视频在线观看播放| 欧美三级电影网站| 爽好久久久欧美精品| 欧美在线视频全部完| 亚洲欧美日韩一区二区| 97se狠狠狠综合亚洲狠狠| 亚洲情趣在线观看| 在线视频你懂得一区二区三区| 亚洲欧美另类图片小说| 欧美视频一区二区三区在线观看| 亚洲一区二区在线视频| 国产精品自在在线| a级精品国产片在线观看| 色综合久久精品| 亚洲国产一区二区a毛片| 欧美一区日韩一区| 国产91露脸合集magnet| 亚洲精品高清在线| 欧美va天堂va视频va在线| av成人动漫在线观看| 天天综合日日夜夜精品| 久久久久99精品国产片| 欧美亚洲尤物久久| 国产成人精品综合在线观看| 亚洲bt欧美bt精品| 国产欧美一区二区精品婷婷 | 日本韩国视频一区二区| 免费久久99精品国产| 中文字幕一区二区三区色视频 | 不卡一区在线观看| 亚洲电影中文字幕在线观看| 久久久久久久久伊人| 色94色欧美sute亚洲线路一久| 久久99精品国产麻豆婷婷洗澡| 亚洲精品日韩一| 久久久久久久久久久黄色| 欧美三级三级三级爽爽爽| 国产成人免费视频网站| 日产国产欧美视频一区精品| 亚洲视频图片小说| 久久综合九色综合久久久精品综合| 色综合夜色一区| 国产一二三精品| 久久精品国产在热久久| 亚洲午夜激情av| 亚洲欧洲精品一区二区三区| 国产欧美一区二区精品久导航 | 777a∨成人精品桃花网| 91首页免费视频| 成人爽a毛片一区二区免费| 日本中文在线一区| 天天影视色香欲综合网老头| 亚洲色图在线视频| 中文字幕av在线一区二区三区| 欧美成人猛片aaaaaaa| 欧美日韩精品一二三区| 欧洲在线/亚洲| 91色婷婷久久久久合中文| 丁香激情综合五月| 国产99久久久精品| 国产精品一二三在| 国产一区二区日韩精品| 久久成人久久爱| 精品一二三四区| 国产一区在线不卡| 国产高清无密码一区二区三区| 久久99精品国产.久久久久久| 日本成人中文字幕在线视频| 午夜精品福利一区二区三区蜜桃| 亚洲gay无套男同| 日韩精品欧美成人高清一区二区| 亚洲福利国产精品| 视频一区二区三区中文字幕| 日韩制服丝袜先锋影音| 亚洲成人黄色影院| 日韩1区2区3区| 久久精品久久精品| 韩国成人在线视频| 久久国产精品区| 国产精品亚洲视频| av电影天堂一区二区在线观看| 激情六月婷婷久久| 久久精品国产99| 粉嫩嫩av羞羞动漫久久久| 不卡视频在线看| 欧美色综合天天久久综合精品| 欧美丰满嫩嫩电影| 精品不卡在线视频| 国产精品丝袜一区| 亚洲自拍偷拍欧美| 久久国产免费看| 国产精品一区在线观看你懂的| www..com久久爱| 欧美精品tushy高清| 欧美一区二区三区的| 久久综合色综合88| 亚洲免费看黄网站| 日本不卡123| 成人丝袜高跟foot| 欧美美女一区二区三区| 欧美精品一区视频| 亚洲激情在线激情| 精品中文字幕一区二区| 色婷婷一区二区三区四区| 日韩欧美自拍偷拍| 亚洲欧美日韩精品久久久久| 美女性感视频久久| av电影天堂一区二区在线 | 1区2区3区精品视频| 日韩国产高清在线| hitomi一区二区三区精品| 欧美剧情片在线观看| 国产欧美日韩激情| 日日骚欧美日韩| 成人av动漫网站| 日韩视频免费观看高清完整版 | 成人午夜免费视频| 91麻豆精品国产91久久久久久| 欧美激情一区二区在线| 日韩黄色免费电影| 91麻豆精品秘密| 久久久噜噜噜久噜久久综合| 亚洲影院久久精品| 成人免费看视频| 日韩欧美亚洲一区二区| 夜夜嗨av一区二区三区| 成人午夜在线免费| 久久五月婷婷丁香社区| 午夜精品福利视频网站| a4yy欧美一区二区三区| 久久久亚洲欧洲日产国码αv| 亚洲风情在线资源站| 97久久超碰精品国产| 久久久久久日产精品| 麻豆国产一区二区| 在线成人午夜影院| 亚洲一区二区三区爽爽爽爽爽| 丁香亚洲综合激情啪啪综合| 日韩精品一区二区三区蜜臀| 亚洲va欧美va天堂v国产综合| 99视频一区二区三区| 国产午夜精品一区二区三区嫩草| 蜜臂av日日欢夜夜爽一区| 欧美色网站导航| 亚洲一二三四区| 91国模大尺度私拍在线视频 | 久久久一区二区| 激情综合色综合久久综合| 日韩美一区二区三区| 免费的国产精品| 日韩欧美国产综合一区| 青青草国产精品亚洲专区无| 日韩亚洲欧美中文三级| 蜜桃久久av一区| 精品美女一区二区| 国产一区在线不卡| 国产欧美一区二区三区网站|