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

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

?? client.cpp

?? VC++語言中級教材,講授網絡編程中語言的運用技術
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
// Client.cpp : Defines the entry point for the console application.
//by caucy 2005.12

#include "stdafx.h"
#include "Client.h"
#include <winsock2.h>
#include <afxsock.h>
#include <assert.H>
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
#include <fstream>
#include <vector>
#include <set>
#include <string>
#include <time.h>
#include <sys/TIMEB.H>

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

/////////////////////////////////////////////////////////////////////////////
// The one and only application object

CWinApp theApp;
using namespace std;

#define BUFFER_BLOCK_SIZE 4096
#define DEAL_RETURN_CODE(retCode) {	if((retCode)!=0)	return retCode;}
#define DEAL_SOCK_ERROR(retCode,sock)	if((retCode)==SOCKET_ERROR || (retCode)==0)\
										{										\
											cout<<"Sock error: "<<GetLastError()<<endl;\
											closesocket(sock);					\
											return -1;							\
										}

//Auxiliary Functions
int ClientCommandResolve();
void InputLine(string & str);
int GetResponseCode(SOCKET sock,int correctCode,string& str);
BOOL ResponsedCodeFinished(const string& str);
u_long ConvertHostnameToLongHostAddress(const char * destAddress);
BOOL SendMessage(SOCKET sock, const char* buffer, int bufferLen);

//Sub-Functions in Client Command
void EncodingBase64(const char* src, char* des);
void DecodingBase64(const char* src, char* des);
void EncodingBase64Adv(const char* src, int length, char* des);
void DecodingBase64Adv(const char* src, int length, char* des);
UCHAR SixBitDecodeIndex(char a);
BOOL EncodeFileBase64(const string& filename, string& code);
BOOL ReadFileToStr(const string& filename, string& code);
void HeadTextTemple(const string& command,const string& addr,string & buffer, BOOL bPrintCommond=TRUE);
void Date(string& buffer);
void From(const string& addr,string & buffer);
void To(const vector<string >& to,string & buffer);
void Cc(const vector<string >& cc,string & buffer);
void Bcc(const vector<string >& bcc,string & buffer);

void DataHead(const string& from,
			  const vector<string >& to,
			  const vector<string >& cc,
			  const vector<string >& bcc,
			  const string & subject,
			  const string& bodytext,
	    	  const string& bodytexthtml,
			  BOOL bHtml,
			  BOOL bAttachment,
			  string& majorSplitTag,
			  string& buffer);
void DataBody(	BOOL bHtmlBody,
				BOOL bAttachment,
				const string& majorSplitTag,
				const string& bodytext,
				const string& bodytexthtml,
				const vector<string> & attachments,
				string& buffer);
void DataBody_PureText(const string& bodytext_base64, string& buffer);
void DataBody_TextAndAttachments(const string& bodytext_base64, 
								 const vector<string >& attachments,
								   const string& majorSplitTag,
								   string& buffer);
void DataBody_HtmlOnly(const string& bodytext_base64, 
					   const string& html_base64,
					   const string& majorSplitTag,
					   string& buffer);
void DataBody_HtmlAndAttachments(const string& bodytext_base64, 
								 const string& html_base64, 
								 const vector<string >& attachments,
								 const string& majorSplitTag,
								 const string& subSplitTag,
								 string& buffer);

//Agent Application Functions
int SendMail(const string& proxyServerName,
			 UINT proxyServerPort,
			 const string& proxyUser,
			 const string& proxyPass,
			 const string& serverHostName,	 
			 UINT serverPort, 
			 const string& username, 
			 const string pass,
			 const string& senderAddr,
			 const vector<string >& recptAddress,
			 const vector<string >& from, //for most mail server, it only support youself address
			 const vector<string >& to,
			 const vector<string >& cc,
			 const vector<string >& bcc,
			 const string & subject,
			 const string & bodytext,
			 const string & bodyhtml,
			 const vector<string >&attachments);
int Socks5StartIPv4(const string& proxyServerHostName,
				u_int proxyServerPort,
				const string& username, 
				const string& pass,
				u_long destAddress,
				u_int destPort,
				SOCKET& sock);

int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{

	ClientCommandResolve();
	return 0;
}

void InputLine(string & str)
{
	char ch;
	str="";
	while((ch = getchar())!= '\n')
		str+=ch;
}

int ClientCommandResolve()
{
	string serverHostName;
	UINT serverPort=0;
	string senderAddr;
	vector<string> recptAddrs;
	string username;
	string pass;
	vector<string > from;
	vector<string > to;
	vector<string > cc;
	vector<string > bcc;
	string subject;
	string bodytext;
	string bodytexthtml;
	vector<string >attachments;
	//proxy
	string proxyServerName;
	UINT proxyServerPort;
	string proxyUser;
	string proxyPass;

//	serverPort=25;
//	username="";
//	pass="";
//	proxyServerName="";
//	proxyServerPort=;
//	proxyUser="";
//	proxyPass="";
	
	char paraCommand[BUFFER_BLOCK_SIZE];
	int  pos=0;
	int iResult;
	string str;
	string::size_type startPos;

	WSADATA wsaData;
	if(WSAStartup(MAKEWORD( 2, 2 ), &wsaData)!=0)
	{
		cerr<<"socket init error"<<endl;
		return -1;
	}
	
	while(1)
	{
		//SMTP Server host name
		if(serverHostName.length()==0)	//for testing
		while(1)
		{
			cout<<"SMTP Server Host Name:";
			cout.flush();
			InputLine(str);
			iResult=sscanf(str.c_str(),"%s",paraCommand);
			if(iResult==EOF)
			{
				cout<<"Input server host name"<<endl;
				continue;
			}
			serverHostName=paraCommand;
			break;
		}
		
		//SMPT Server Port
		if(serverPort==0)	//for testing
		while(1)
		{
			cout<<"SMTP Server Port:";
			cout.flush();
			InputLine(str);
			iResult=sscanf(str.c_str(),"%s",paraCommand);
			if(iResult!=EOF)
			{
				serverPort=atoi(paraCommand);
				if(serverPort<0)
				{
					cout<<"Invalid port."<<endl;
					continue;
				}
			}
			break;
		}

		//USER NAME
		if(username.length()==0)	//for testing
		while(1)
		{
			cout<<"USER NAME:";
			cout.flush();
			InputLine(str);
			iResult=sscanf(str.c_str(),"%s",paraCommand);
			if(iResult==EOF)
			{
				cout<<"Input user name for authentication."<<endl;
				continue;
			}
			username=paraCommand;
			break;
		}

		//PASS
		if(pass.length()==0)	//for testing
		while(1)
		{
			cout<<"PASSWORD:";
			cout.flush();
			InputLine(str);
			iResult=sscanf(str.c_str(),"%s",paraCommand);
			if(iResult==EOF)
			{
				cout<<"Input password."<<endl;
				continue;
			}
			pass=paraCommand;
			break;
		}

		//Proxy
		if(proxyServerName.length()==0)	//for testing
		{
			cout<<"Proxy?";
			cout.flush();
			InputLine(str);
			if(str=="y" || str=="Y")
			{
				cout<<"Proxy Server Addr:";
				InputLine(proxyServerName);
				cout<<"Proxy Server Port:";
				InputLine(str);
				sscanf(str.c_str(),"%d",&proxyServerPort);
				cout<<"Proxy Server Username:";
				InputLine(proxyUser);
				cout<<"Proxy Server Pass:";
				InputLine(proxyPass);
			}
		}
		cout.flush();
		//MAIL FROM
		//Though rfc822 supports muti-senders, most email server today only support authentication login.
		//So, the fact is one sender one mail.
		if(senderAddr.length()==0)	//for testing
		while(1)
		{
			cout<<"MAIL FROM:";
			cout.flush();
			InputLine(str);
			iResult=sscanf(str.c_str(),"%s",paraCommand);
			if(iResult==EOF)
			{
				cout<<"Input sender address."<<endl;
				continue;
			}
			senderAddr=paraCommand;
			break;
		}
		from.push_back(senderAddr);

/*
		//RCPT TO
		//If having multiple receivers, here using spaces to split them
		if(recptAddrs.empty())		//for testing
		while(1)
		{
			cout<<"RCPT TO:";
			cout.flush();
			InputLine(str);
			while(1)
			{
				iResult=sscanf(str.c_str(),"%s",paraCommand); 
				if(iResult==EOF)
					break;
				startPos=str.find(paraCommand,0,strlen(paraCommand));
				startPos+=strlen(paraCommand);
				str=str.substr(startPos,str.length()-startPos);
				recptAddrs.push_back(string(paraCommand));
			}
			if(recptAddrs.size()==0)
			{
				cout<<"Input receiver address."<<endl;
				continue;
			}
			break;
		}
*/
		//to
		if(to.empty())		//for testing
		{
			cout<<"To: ";
			cout.flush();
			InputLine(str);
			while(1)
			{
				if(str.length()==0)
					break;
				iResult=sscanf(str.c_str(),"%s",paraCommand);
				if(iResult==EOF)
					break;
				startPos=str.find(paraCommand,0,strlen(paraCommand));
				startPos+=strlen(paraCommand);
				str=str.substr(startPos,str.length()-startPos);
				to.push_back(string(paraCommand));
			}
		}

		//Cc
		if(cc.empty())		//for testing
		{
			cout<<"Cc: ";
			cout.flush();
			InputLine(str);
			while(1)
			{
				if(str.length()==0)
					break;
				iResult=sscanf(str.c_str(),"%s",paraCommand);
				if(iResult==EOF)
					break;
				startPos=str.find(paraCommand,0,strlen(paraCommand));
				startPos+=strlen(paraCommand);
				str=str.substr(startPos,str.length()-startPos);
				cc.push_back(string(paraCommand));
			}
		}

		//Bcc
		if(cc.empty())		//for testing
		{
			cout<<"Bcc: ";
			cout.flush();
			InputLine(str);
			while(1)
			{
				if(str.length()==0)
					break;
				iResult=sscanf(str.c_str(),"%s",paraCommand);
				if(iResult==EOF)
					break;
				startPos=str.find(paraCommand,0,strlen(paraCommand));
				startPos+=strlen(paraCommand);
				str=str.substr(startPos,str.length()-startPos);
				bcc.push_back(string(paraCommand));
			}
		}

		//Subject
		if(subject.length()==0)		//for testing
		{
			cout<<"Subject:"<<endl;
			cout.flush();
			InputLine(subject);
		}

		//DATA body: text
		if(bodytext.length()==0)		//for testing
		{
			bodytext="";
			cout<<"DATA:"<<endl;
			cout.flush();
			while(1)
			{
				InputLine(str);
				if(str=="_Quit")
					break;
				bodytext+=str+"\r\n";
			}
		}

		//DATA body: html
		//Most email reader-agents support html coded email. So we support it too.
		if(bodytexthtml.length()==0)		//for testing
		{
			cout<<"Do you want peer-agent to see a html coded email?Y/N?";
			cout.flush();
			InputLine(str);
			if(str=="Y" || str=="y")
			{
				cout<<"Input the html file's directory."<<endl;
				InputLine(str);
				if(str!="")
				{
					ReadFileToStr(str,bodytexthtml);
				}
			}
		}

		//DATA body: attachment
		if(attachments.empty())		//for testing
		{
			cout<<"Do you want to send attachments?Y/N?";
			cout.flush();
			InputLine(str);
			if(str=="Y" || str=="y")
			{
				cout<<"Input the attachment file's directory."<<endl;
				while(1)
				{
					InputLine(str);
					if(str!="")
						attachments.push_back(str);
					else
						break;
				}
			}
		}
		cout<<"Sending Mail....."<<endl;

		//regroup rectpAddres array
		set<string> stringSet;
		int i;
		for(i=0; i< to.size(); i++)
		{
			stringSet.insert(to[i]);
		}
		for(i=0; i< cc.size(); i++)
		{
			stringSet.insert(cc[i]);
		}
		for(i=0; i< bcc.size(); i++)
		{
			stringSet.insert(bcc[i]);
		}
		for(set<string >::iterator iteSet=stringSet.begin();
				iteSet!=stringSet.end(); iteSet++)
		{
			recptAddrs.push_back(*iteSet);
		}

		iResult=SendMail(proxyServerName,proxyServerPort,proxyUser,proxyPass,
						serverHostName,serverPort,username,pass,
						senderAddr,recptAddrs,
						from,to,cc, bcc,subject,bodytext,bodytexthtml,attachments);
		if(iResult==-1)
		{
			cout<<"Unsuccessfully sent this mail. Save it to file."<<endl;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人精品亚洲777人妖| 亚洲女人****多毛耸耸8| 欧美性大战xxxxx久久久| 日韩欧美综合一区| 亚洲国产精华液网站w| 亚洲综合另类小说| 成人va在线观看| 久久综合九色综合久久久精品综合| 中文字幕一区在线观看视频| 麻豆成人久久精品二区三区小说| 91啪亚洲精品| 中文天堂在线一区| 九九九久久久精品| 欧美日韩美少妇| 最新国产の精品合集bt伙计| 国产美女视频一区| 日韩免费性生活视频播放| 亚洲理论在线观看| eeuss鲁一区二区三区| 精品国产免费视频| 人妖欧美一区二区| 欧美日韩中文国产| 一区二区三区在线高清| 9色porny自拍视频一区二区| 国产色91在线| 国产精品一区二区久激情瑜伽| 日韩欧美你懂的| 日韩国产精品91| 亚洲素人一区二区| 欧美大片一区二区三区| 国产色综合久久| 久久久久久久久99精品| 91精品国产91综合久久蜜臀| 91国偷自产一区二区开放时间 | 夜夜嗨av一区二区三区中文字幕| 91国偷自产一区二区开放时间| 国产精品一品视频| 成人av电影在线| 自拍av一区二区三区| 国产成人精品免费看| wwwwww.欧美系列| 久久97超碰国产精品超碰| 日韩限制级电影在线观看| 九九精品一区二区| 久久精品国产一区二区三区免费看| 亚洲欧美电影一区二区| 亚洲午夜视频在线| 国产麻豆9l精品三级站| 国产一区二区免费看| 国产精品综合一区二区| 国产东北露脸精品视频| 国产99久久久国产精品潘金| 成人h动漫精品| 色成年激情久久综合| 欧美二区乱c少妇| 久久久久久日产精品| 中文字幕高清不卡| 天天色综合成人网| 久草在线在线精品观看| 91久久精品网| 欧美日本视频在线| 亚洲制服丝袜一区| 99国产精品久| 国模大尺度一区二区三区| 日韩精品一区二区三区视频| 亚洲mv在线观看| 欧美va亚洲va香蕉在线| 国产大陆亚洲精品国产| 99精品国产99久久久久久白柏| 色噜噜狠狠一区二区三区果冻| 亚洲成人三级小说| 国产精品欧美一级免费| 国产精品综合一区二区三区| 国产精品午夜电影| 69堂亚洲精品首页| 国产成人免费在线视频| 尤物在线观看一区| 国产福利不卡视频| 色综合激情久久| 自拍偷拍欧美精品| 91在线观看免费视频| 69精品人人人人| 国产盗摄一区二区三区| 亚洲一区中文在线| 国产亚洲精品资源在线26u| 色婷婷香蕉在线一区二区| 精品一区二区在线观看| 亚洲日本免费电影| 久久久久久久久蜜桃| 精品视频在线免费看| 96av麻豆蜜桃一区二区| 精品在线播放免费| 午夜精品影院在线观看| 亚洲图片另类小说| 久久久精品天堂| 日韩视频免费观看高清在线视频| 色婷婷综合久久久| 国产黄色精品网站| 美女脱光内衣内裤视频久久影院| 亚洲欧美另类小说| 国产精品久久久一区麻豆最新章节| 欧美精品久久一区| 91一区二区三区在线观看| 国产美女精品一区二区三区| 免费精品视频在线| 亚洲gay无套男同| 亚洲精选视频在线| 最好看的中文字幕久久| 国产精品午夜在线观看| 欧美激情一区二区三区不卡| 久久亚洲一区二区三区明星换脸 | 国产成人午夜电影网| 蜜桃av噜噜一区| 婷婷开心激情综合| 午夜在线成人av| 亚洲电影中文字幕在线观看| 一区二区三区四区五区视频在线观看| 国产欧美日韩视频一区二区| 精品国产91久久久久久久妲己| 欧美xfplay| 欧美tk—视频vk| 久久综合国产精品| 精品成人a区在线观看| 久久夜色精品一区| 国产拍欧美日韩视频二区| 久久久精品国产免费观看同学| 久久众筹精品私拍模特| 国产亚洲va综合人人澡精品| 成人在线视频一区二区| 久久精品免费观看| 免费欧美高清视频| 欧美疯狂做受xxxx富婆| 欧美日韩高清不卡| 欧美日韩中文字幕一区| av不卡一区二区三区| 国产白丝网站精品污在线入口| 日韩av一区二区三区| 男男成人高潮片免费网站| 亚洲精品老司机| 亚洲欧美激情插| 亚洲成人av一区| 国产91在线|亚洲| 91色|porny| 欧美丰满少妇xxxxx高潮对白| 欧美精品自拍偷拍动漫精品| 3atv一区二区三区| 亚洲精品在线网站| 亚洲欧洲一区二区三区| 日韩av电影一区| 顶级嫩模精品视频在线看| 91成人看片片| 2021国产精品久久精品| 亚洲同性gay激情无套| 天堂av在线一区| 国产成a人亚洲精品| 欧美揉bbbbb揉bbbbb| 精品入口麻豆88视频| 日韩美女视频一区二区| 日本视频中文字幕一区二区三区| 国产精品小仙女| 欧美日韩视频在线第一区| 久久久一区二区三区捆绑**| 亚洲精品老司机| 国产传媒一区在线| 欧美日韩国产电影| 亚洲天堂a在线| 久久综合综合久久综合| 色婷婷av一区二区三区之一色屋| 欧美videossexotv100| 一区二区三区欧美在线观看| 国产精品亚洲专一区二区三区 | 久久精品视频免费观看| 亚洲成人免费视频| 国产成人8x视频一区二区 | 中文字幕精品综合| 日本女人一区二区三区| 91猫先生在线| 国产精品美女视频| 久久精品免费观看| 欧美高清视频一二三区| 亚洲精品日韩一| 高清成人在线观看| 精品黑人一区二区三区久久 | 欧美丰满嫩嫩电影| 亚洲欧美日韩一区二区三区在线观看 | 精品伊人久久久久7777人| 久久久蜜桃精品| 国产精品一区在线| 国产精品一区二区黑丝| 亚洲综合激情另类小说区| 欧美在线一区二区三区| 亚洲一区视频在线观看视频| 欧美性感一区二区三区| 日日夜夜精品视频免费| 欧美午夜不卡视频| 免费成人在线视频观看| 精品成人a区在线观看| 成人国产精品免费网站| 久久亚洲二区三区| 久久免费偷拍视频|