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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? client.cpp

?? c++編寫的FTP服務(wù)器和客戶端程序
?? CPP
字號(hào):
#include <fstream>
#include <sstream>
#include "client.h"
using namespace std;

Client::Client(const string& addr, int port) {
	TcpFactory factory;
	factory.setDest(addr, port);
	pi = factory.connect();

	string text;
	int reply = getReply(text);

	if(reply==120)
		reply = getReply(text);

	if(reply!=220) throw "Connect to server failed";

	passive = false;
	dataType = Tcp::ASCII;
}

Client::~Client() {
	delete pi;
}

int Client::user(const string& username) {
	string text = "USER " + username;
	pi->write(text);
	cout << "\t[C] " << text << endl;

	return getReply(text);
}

int Client::pass(const string& password) {
	string text = "PASS " + password;
	pi->write(text);
	cout << "\t[C] PASS (hidden)" << endl;

	return getReply(text);
}

int Client::cwd(const string& path) {
	string text = "CWD " + path;
	pi->write(text);
	cout << "\t[C] " << text << endl;

	return getReply(text);
}

int Client::cdup() {
	pi->write("CDUP");
	cout << "\t[C] CDUP" << endl;

	string text;
	return getReply(text);
}

int Client::quit() {
	pi->write("QUIT");
	cout << "\t[C] QUIT" << endl;

	string text;
	return getReply(text);
}

int Client::port(int port) {
	int addr = pi->getLocalAddr();
	stringstream ss;
	ss << "PORT " << (addr>>24) << ',' << ((addr>>16)&0xff) << ',';
	ss << ((addr>>8)&0xff) << ',' << (addr&0xff) << ',';
	ss << ((port>>8)&0xff) << ',' << (port&0xff);
	pi->write(ss.str());
	cout << "\t[C] " << ss.str() << endl;

	string text;
	int reply = getReply(text);

	if(reply==200) {
		dtp.setLocalPort(port);
		passive = false;
	}

	return reply;
}

int Client::pasv() {
	pi->write("PASV");
	cout << "\t[C] PASV" << endl;

	string text;
	int reply = getReply(text);

	if(reply==227) {
		int addr = 0;
		int port;
		int i = 27;
		for(int j=0; j<5; j++) {
			int comma = text.find(',', i);
			if(j<4)
				addr = (addr<<8)+atoi(text.substr(i, comma-i).c_str());
			else
				port = atoi(text.substr(i, comma-i).c_str());
			i = comma+1;
		}
		port = (port<<8)+atoi(text.substr(i).c_str());

		passive = true;
		dtp.setDest(addr, port);
		data = dtp.connect();
	}

	return reply;
}

int Client::type(Tcp::DataType type) {
	string text = "TYPE ";
	switch(type) {
	case Tcp::ASCII:
		text += 'A';
		break;
	case Tcp::IMAGE:
		text += 'I';
		break;
	default:
		throw "Unsupported data type";
	}

	pi->write(text);
	cout << "\t[C] " << text << endl;

	int reply = getReply(text);

	if(reply==200)
		dataType = type;

	return reply;
}

int Client::stor(const string& filename) {
	ifstream is(filename.c_str(), dataType==Tcp::ASCII?ios::in:ios::binary);
	if(!is) throw "File not exist";

	string text = "STOR " + filename;
	pi->write(text);
	cout << "\t[C] " << text << endl;

	openDataConnection();
	int reply = getReply(text);

	if(reply==125 || reply==150) {
		data->setDataType(dataType);
		data->writeFromStream(is);
	}

	delete data;
	if(reply==125 || reply==150) reply = getReply(text);

	return reply;
}

int Client::retr(const string& filename) {
	string text = "RETR " + filename;
	pi->write(text);
	cout << "\t[C] " << text << endl;

	openDataConnection();
	int reply = getReply(text);

	if(reply==125 || reply==150) {
		ofstream os(filename.c_str(), dataType==Tcp::ASCII?ios::out:ios::binary);
		data->setDataType(dataType);
		data->readToStream(os);
	}

	delete data;
	if(reply==125 || reply==150) reply = getReply(text);

	return reply;
}

int Client::appe(const string& filename) {
	ifstream is(filename.c_str(), dataType==Tcp::ASCII?ios::in:ios::binary);
	if(!is) throw "File not exist";

	string text = "APPE " + filename;
	pi->write(text);
	cout << "\t[C] " << text << endl;

	openDataConnection();
	int reply = getReply(text);

	if(reply==125 || reply==150) {
		data->setDataType(dataType);
		data->writeFromStream(is);
	}

	delete data;
	if(reply==125 || reply==150) reply = getReply(text);

	return reply;
}

int Client::list(const string& path) {
	string text = path.length() ? "LIST " + path : "LIST";
	pi->write(text);
	cout << "\t[C] " << text << endl;

	openDataConnection();
	int reply = getReply(text);

	if(reply==125 || reply==150) data->readToStream(cout);

	delete data;
	if(reply==125 || reply==150) reply = getReply(text);

	return reply;
}

int Client::pwd(Directory& dir) {
	pi->write("PWD");
	cout << "\t[C] PWD" << endl;

	string text;
	int reply = getReply(text);

	if(reply==257)
		dir.cd(text.substr(5, text.find('"', 5)-5));

	return reply;
}

int Client::abor() {
	pi->write("ABOR");
	cout << "\t[C] ABOR" << endl;

	string text;
	return getReply(text);
}

int Client::syst() {
	pi->write("SYST");
	cout << "\t[C] SYST" << endl;

	string text;
	return getReply(text);
}

int Client::help(const string& command) {
	string text = command.length() ? "HELP " + command : "HELP";
	pi->write(text);
	cout << "\t[C] " << text << endl;

	return getReply(text);
}

bool Client::connect(Client* host) {
	pi->write("PASV");
	cout << "\t[C] PASV" << endl;

	string text;
	if(getReply(text)!=227) return false;

	text.replace(0, 27, "PORT ");
	text.resize(text.find(')'));
	host->pi->write(text);
	cout << "\t[C] " << text << endl;

	return host->getReply(text)==200;
}

bool Client::transfer(Client* host, const string& filename) {
	string text = "RETR " + filename;
	host->pi->write(text);
	cout << "\t[C] " << text << endl;

	int reply = host->getReply(text);
	if(reply!=125 && reply!=150) return false;

	text = "STOR " + filename.substr(filename.rfind('/')+1);
	pi->write(text);
	cout << "\t[C] " << text << endl;

	reply = getReply(text);
	if(reply!=125 && reply!=150) return false;

	host->getReply(text);
	getReply(text);
	return true;
}

int Client::getReply(string& reply) {
	reply = pi->read() + '\n';
	string num = reply.substr(0, 3) + ' ';

	if(reply[3]=='-') {
		string temp;
		do {
			temp = pi->read();
			reply += "\t[R] " + temp + '\n';
		} while(temp.substr(0, 4)!=num);
	}

	cout << "\t[R] " << reply;
	return atoi(num.c_str());
}

void Client::openDataConnection() {
	if(passive)
		passive = false;
	else
		data = dtp.listen();
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美视频在线观看一区二区| 国产精品一卡二卡在线观看| 91免费观看国产| 亚洲激情自拍视频| 色悠久久久久综合欧美99| 一区二区三区产品免费精品久久75| 一本色道久久综合亚洲aⅴ蜜桃| 亚洲精品视频在线| 91精品在线麻豆| 韩国欧美国产一区| 国产精品毛片久久久久久久| 91视频免费看| 日韩激情一区二区| 久久精子c满五个校花| 9久草视频在线视频精品| 亚洲精品日韩综合观看成人91| 欧美性色黄大片手机版| 麻豆精品一区二区三区| 国产欧美中文在线| 色偷偷成人一区二区三区91| 午夜不卡在线视频| 久久精品亚洲精品国产欧美kt∨| av中文字幕在线不卡| 亚洲电影欧美电影有声小说| 欧美成人三级在线| 成人avav在线| 日韩中文欧美在线| 国产日韩欧美综合一区| 色婷婷激情久久| 精品一二线国产| 亚洲视频香蕉人妖| 精品蜜桃在线看| 色偷偷久久一区二区三区| 久久成人av少妇免费| 日韩美女久久久| 精品久久久久久综合日本欧美| 成人av中文字幕| 免费成人小视频| 综合久久给合久久狠狠狠97色| 欧美一区永久视频免费观看| 成人午夜在线播放| 秋霞午夜av一区二区三区| 国产精品美女久久久久久久久久久 | 青娱乐精品视频| 国产精品大尺度| 亚洲精品一区二区三区精华液 | 18欧美亚洲精品| 日韩亚洲欧美在线| 91美女蜜桃在线| 国产成人午夜片在线观看高清观看| 亚洲午夜久久久久久久久久久| 久久久蜜桃精品| 日韩三级视频在线看| 欧美中文字幕久久| 99久久久国产精品免费蜜臀| 国产精品资源网站| 麻豆精品在线看| 丝袜美腿高跟呻吟高潮一区| 亚洲精品视频在线| 日韩一区欧美一区| 日本一区二区高清| 久久久精品tv| www激情久久| 91精品国产乱码久久蜜臀| 91福利国产成人精品照片| 99久久精品国产一区二区三区| 国产精品夜夜爽| 国内精品在线播放| 精品一区二区三区视频| 裸体在线国模精品偷拍| 日本欧美一区二区三区乱码 | 国产欧美日韩在线看| 精品福利二区三区| 精品区一区二区| 精品sm在线观看| 久久综合五月天婷婷伊人| 欧美大度的电影原声| 精品毛片乱码1区2区3区| 欧美一区在线视频| 日韩精品影音先锋| 久久新电视剧免费观看| 久久久亚洲精品石原莉奈| 久久色在线视频| 欧美韩国日本综合| 欧美国产激情二区三区| 中文字幕中文乱码欧美一区二区| 国产精品久久久久久户外露出| 国产精品乱码久久久久久| 亚洲图片激情小说| 亚洲影院理伦片| 手机精品视频在线观看| 免费成人在线播放| 国产激情偷乱视频一区二区三区| 福利视频网站一区二区三区| 粉嫩aⅴ一区二区三区四区 | 国产专区综合网| 国产成人综合亚洲91猫咪| 99在线热播精品免费| 欧洲视频一区二区| 日韩欧美国产不卡| 国产精品热久久久久夜色精品三区 | 国产伦理精品不卡| 国产69精品一区二区亚洲孕妇| 成人a区在线观看| 欧美亚洲国产一区二区三区va| 91精选在线观看| 久久精品夜夜夜夜久久| 一区二区免费在线| 久久精品久久综合| 成人av集中营| 在线播放中文一区| 久久久久久久久久美女| 亚洲日穴在线视频| 日精品一区二区三区| 国产一区二区福利| 色婷婷狠狠综合| 欧美成人vps| 亚洲欧美综合另类在线卡通| 亚洲国产一区视频| 国产精品18久久久久| 日本韩国精品在线| 精品久久国产97色综合| 亚洲人成网站影音先锋播放| 日本中文一区二区三区| 99re8在线精品视频免费播放| 欧美精三区欧美精三区| 中文字幕一区二区三区四区不卡| 午夜精品福利一区二区三区av| 国产精品一级在线| 欧美精品久久一区| 亚洲视频 欧洲视频| 高清久久久久久| 日韩美女视频在线| 亚洲精品国产品国语在线app| 精品在线免费视频| 欧美区视频在线观看| 国产欧美一区二区三区鸳鸯浴| 天天综合色天天综合| 色综合久久九月婷婷色综合| 久久综合成人精品亚洲另类欧美| 亚洲电影第三页| 在线亚洲人成电影网站色www| 欧美精品一区二区久久久| 亚洲成人午夜电影| 色视频一区二区| 中文字幕国产一区二区| 韩国一区二区在线观看| 欧美一区二区三区在线看| 伊人性伊人情综合网| 成人av动漫网站| 久久精品一区二区| 韩国av一区二区三区四区| 欧美一级欧美三级在线观看 | 久久久久久日产精品| 日韩成人免费电影| 欧美日韩高清在线| 亚洲国产精品久久艾草纯爱 | 亚洲一区二区三区自拍| eeuss影院一区二区三区| 久久久久久久久蜜桃| 国产最新精品免费| 日韩精品一区二区三区老鸭窝| 午夜视频在线观看一区二区三区| 色综合夜色一区| 亚洲视频精选在线| 91一区二区在线| 亚洲人成在线观看一区二区| av在线综合网| 亚洲视频你懂的| 色综合久久中文字幕综合网| 亚洲色图视频免费播放| 成年人网站91| 亚洲人成电影网站色mp4| 97se亚洲国产综合自在线| 亚洲同性gay激情无套| 91视频在线观看免费| 亚洲精品免费视频| 欧美日韩在线不卡| 天天操天天色综合| 日韩视频在线永久播放| 韩国午夜理伦三级不卡影院| 久久久久久免费网| av中文字幕一区| 亚洲国产成人91porn| 欧美夫妻性生活| 久草在线在线精品观看| 久久美女高清视频| 成人av在线播放网站| 亚洲精品中文字幕在线观看| 欧洲日韩一区二区三区| 天天色综合天天| 久久亚洲精品国产精品紫薇| 成人小视频在线| 亚洲黄色在线视频| 欧美一区在线视频| 国产成人av一区二区三区在线| 日韩伦理电影网| 欧美一区二区三区四区五区| 国产精品一区久久久久| 亚洲视频免费观看|