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

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

?? basesocket.cpp

?? a self encapsulated socket lib
?? CPP
字號:
#include "BaseSocket.h"
#include <iostream>
#include <string>
#include <stdio.h>
#include <sstream>

const char* BaseSocket::IP_ADDRESS = "127.0.0.1";


inline std::tr1::shared_ptr<FILE> getfd(std::string filename, std::string mode)
{
	std::tr1::shared_ptr<FILE> fd(fopen(filename.c_str(), mode.c_str()), fclose);	
	return fd;
}

inline std::string getsubstr(std::string& data, int& i , int& j)
{
	char c = '\1';
	i = j + 1; j = data.find(c, i);
	if ( j == data.npos) return "";
	return data.substr(i, j - i);
}


inline void decode_task(std::string data, Task& task)
{	
	int i = 0, j = -1;
	getsubstr(data, i, j);
	task.id = atoi(getsubstr(data, i, j).c_str());	
	strcpy(task.title, getsubstr(data, i, j).c_str());
	strcpy(task.content, getsubstr(data, i, j).c_str());
	strcpy(task.pubDate, getsubstr(data, i, j).c_str());
	strcpy(task.dlDate, getsubstr(data, i, j).c_str());	
	task.priority = atoi(getsubstr(data, i, j).c_str());
	task.dtoRemind = atoi(getsubstr(data, i, j).c_str());
}

inline std::string encode_task(std::string istrct, Task task)
{
	std::stringstream ss;
	ss << istrct;
	ss << '\1';
	ss << task.id;
	ss << '\1';
	ss << task.title;
	ss << '\1';
	ss << task.content;
	ss << '\1';
	ss << task.pubDate;
	ss << '\1';
	ss << task.dlDate;
	ss << '\1';
	ss << task.priority;
	ss << '\1';
	ss << task.dtoRemind;
	ss << '\1';
	ss << istrct;	
	return ss.str();	
}

BaseSocket::BaseSocket(void) : AddrLen(sizeof(m_serverAddr))
{
}

BaseSocket::~BaseSocket(void)
{
}

int BaseSocket::SendBuff(SOCKET socket, const char SendBuffer[]) //send the data stored in SendBuffer
{	
	int len = strlen(SendBuffer);	
	int cur = 0;
	while (len > 0) {
		int Ret = send(socket, &SendBuffer[cur], MAX_PATH, 0);
		cur += MAX_PATH;
		len -= MAX_PATH;
		if (Ret == SOCKET_ERROR) return BaseSocket::ERR;
	}
	return 0;
}
int BaseSocket::RecvBuff(SOCKET socket, char RecvBuffer[])		//receive data and store in RecvBuffer
{
	memset(RecvBuffer, 0x00, sizeof(RecvBuffer));
	return recv(socket, RecvBuffer, MAX_PATH, 0);			
}

bool ReceiveTask(std::string data)	//save received task to local
{
	std::tr1::shared_ptr<FILE> fd = getfd("task.dat", "ab");
	if (NULL == fd.get()) return false;
	Task task;
	decode_task(data, task);
	if (1 != fwrite(&task, sizeof(Task), 1, fd.get())) return false;
	return true;
}

int GetInstruction(std::string str, std::string& icode)  //extract instruction from str
{
	int i = str.find('\1', 0);

	if (i != str.npos){	
		icode = str.substr(0, i);
		if(icode.compare("st") == 0) return 1; //send task to client
		if(icode.compare("ft") == 0) return 2; //fetch task from server
	}
	return -1;
}

bool InstructionEnd(std::string data, std::string icode)
{
	int i = data.find_last_of('\1');
	++i;
	if (i != data.npos && data.substr(i).compare(icode) == 0)
		return true;
	return false;
}

//data contains the username of the user start the request
int SendTaskFromLocal(SOCKET socket, std::string data)
{
	int i = 0, j = -1;
	getsubstr(data, i, j); //neglect instruction
	std::string username = getsubstr(data, i, j);
	std::string filename =  username + "_task.dat";
	std::tr1::shared_ptr<FILE> fd = getfd(filename.c_str(), "rb");
	
	while (!feof(fd.get())) {		
		Task task;
		if (fread(&task, sizeof(Task), 1, fd.get()) != 1) break;
		std::string task_str = encode_task("st", task);
		BaseSocket::SendBuff(socket, task_str.c_str()); //send the task
	}		
	fd = getfd(filename.c_str(), "wb"); //clear the task file in server of the user
	return 0;
}

//used to listen for any requests after establishing a connection 
DWORD WINAPI BaseSocket::RecvThread(LPVOID lpParameter)
{
	SOCKET ClientSocket = (SOCKET)lpParameter;   
	char RecvBuffer[MAX_PATH];
	int istrct = -1;
	bool iend = false;
	std::string icode = "";	
	while ( true ){
		std::stringstream ss;
		int Ret = RecvBuff(ClientSocket, RecvBuffer);
		if ( Ret == 0 || Ret == SOCKET_ERROR ) {
			return Ret;
		}

		if (-1 != istrct && !iend){ // check for the end of the instruction
			iend = InstructionEnd(RecvBuffer, icode);
		}

		if (-1 == istrct){ //check for an instruction
			istrct = GetInstruction(RecvBuffer, icode);
			iend = InstructionEnd(RecvBuffer, icode);			
		}		

		if ( -1 != istrct) ss << RecvBuffer; //gather received data

		if (iend) {
			switch(istrct){
				case 1: ReceiveTask(ss.str()); break;	// receive task from server
				case 2: SendTaskFromLocal(ClientSocket, ss.str()); break;  //respond to the fetch task request
			}			
			istrct = -1;
			iend = false;
		}			
	}
}


int BaseSocket::Receive(const SOCKET& socket)	//start a thread to listen to request
{
	HANDLE hThread = CreateThread(NULL, 0, RecvThread, (LPVOID)socket, 0, NULL);
	if ( hThread == NULL )
	{
		throw "Create Thread Failed!";		
	}
	CloseHandle(hThread);
	return 0;
}

int BaseSocket::Startup()
{
	//Init Windows Socket
	if ( WSAStartup(MAKEWORD(2,2), &Ws) != 0 ){
		throw "Init Windows Socket Failed!";	
	}
	return 0;
}

int BaseSocket::Cleanup()
{	
	WSACleanup();
	return 0;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
**网站欧美大片在线观看| 欧美va在线播放| 午夜精品福利在线| 欧美美女喷水视频| 日本欧美在线看| 1000精品久久久久久久久| 国产成人自拍在线| 国产欧美日韩三区| 99久久国产免费看| 亚洲国产日韩综合久久精品| 欧美乱熟臀69xxxxxx| 久久精品国产99国产| 日本一区二区视频在线观看| 91视频一区二区三区| 亚洲大片免费看| 欧美va日韩va| av激情综合网| 蜜臀久久久久久久| 国产精品美女久久久久高潮| 91福利精品视频| 美女尤物国产一区| 日韩伦理av电影| 日韩一区二区三区电影在线观看| 国产精品一区在线观看你懂的| 国产精品国产精品国产专区不片| 欧美性感一类影片在线播放| 麻豆成人av在线| 亚洲男人天堂av网| 欧美不卡一区二区| 91啪亚洲精品| 久久精品国产久精国产| 亚洲精品欧美激情| 久久伊人蜜桃av一区二区| 在线中文字幕一区| 国产盗摄视频一区二区三区| 亚洲曰韩产成在线| 国产欧美一区二区三区鸳鸯浴| 在线观看免费成人| 国产成人精品免费一区二区| 午夜日韩在线观看| 中文字幕视频一区| 成人国产精品免费观看动漫| 最近中文字幕一区二区三区| 欧美一区二区成人6969| 91免费版在线| 国产精品一区二区男女羞羞无遮挡| 国产精品国产三级国产普通话99 | 欧美不卡一区二区| 日本道色综合久久| 国产乱码精品一区二区三区忘忧草 | 91丨porny丨蝌蚪视频| 韩国一区二区三区| 视频一区中文字幕国产| 亚洲精品日日夜夜| 欧美日韩一区二区三区在线看| 美女精品一区二区| 亚洲一区免费在线观看| 专区另类欧美日韩| 欧美激情资源网| 日韩精品在线看片z| 欧美日本在线一区| 91久久精品网| 色婷婷亚洲一区二区三区| 成人免费视频视频| 国产成a人无v码亚洲福利| 国产一区 二区| 韩国女主播成人在线| 免费一级片91| 美女高潮久久久| 精品一区二区三区影院在线午夜| 日韩av中文字幕一区二区| 亚洲成人免费影院| 日韩电影在线看| 日本三级亚洲精品| 捆绑紧缚一区二区三区视频| 免费高清在线一区| 老司机一区二区| 久久99精品国产麻豆婷婷| 麻豆一区二区在线| 国产专区欧美精品| 国产精品资源站在线| 国产传媒一区在线| 波多野结衣在线一区| 波多野结衣精品在线| 色综合久久久久| 日本高清视频一区二区| 欧美视频中文字幕| 91精品国产一区二区| 日韩一区二区免费在线观看| 精品福利视频一区二区三区| 久久久久久久久久久黄色| 国产精品每日更新| 亚洲主播在线观看| 免费人成黄页网站在线一区二区| 久久国产欧美日韩精品| 国产麻豆精品95视频| 成人午夜在线播放| 日本高清不卡视频| 884aa四虎影成人精品一区| 日韩视频免费观看高清在线视频| 精品国产精品网麻豆系列| 国产精品网曝门| 午夜久久电影网| 久久精品国产色蜜蜜麻豆| 成人一区在线观看| 欧美三级日韩三级| 欧美精品一区在线观看| 国产精品灌醉下药二区| 亚洲成人久久影院| 国产专区欧美精品| 在线观看欧美日本| 久久久噜噜噜久久中文字幕色伊伊| 亚洲国产精品ⅴa在线观看| 亚洲一区在线电影| 国产黄色91视频| 欧美午夜精品一区二区三区| 欧美精品一区二区三区久久久| 国产精品久久久久国产精品日日| 亚洲国产美女搞黄色| 国产大陆精品国产| 欧美日韩不卡在线| 中文字幕亚洲一区二区va在线| 三级久久三级久久| 99久精品国产| 久久先锋资源网| 视频一区二区不卡| 日本国产一区二区| 国产亚洲一二三区| 青青国产91久久久久久| 99精品视频一区二区三区| 欧美成人精品福利| 亚洲一区二区三区自拍| eeuss国产一区二区三区| 欧美va亚洲va在线观看蝴蝶网| 亚洲一区二区在线视频| 国产a久久麻豆| 欧美不卡视频一区| 亚洲国产婷婷综合在线精品| 成人福利在线看| ww久久中文字幕| 免费观看一级特黄欧美大片| 在线亚洲一区二区| 国产精品免费久久久久| 精品在线视频一区| 51精品视频一区二区三区| 中文字幕亚洲区| 风间由美性色一区二区三区| 日韩免费视频一区二区| 亚洲成人第一页| 欧美亚洲综合一区| 亚洲精品免费电影| 丰满岳乱妇一区二区三区| 久久久激情视频| 国产乱码字幕精品高清av| 精品国产青草久久久久福利| 日韩精品成人一区二区在线| 欧美三区在线观看| 一区二区理论电影在线观看| 91网站最新地址| 亚洲欧洲日产国码二区| av亚洲精华国产精华精| 国产精品女上位| 成人在线一区二区三区| 国产精品免费人成网站| 不卡的av电影在线观看| 中文字幕亚洲精品在线观看| 91同城在线观看| 亚洲老妇xxxxxx| 欧美体内she精高潮| 午夜电影网一区| 91精品麻豆日日躁夜夜躁| 日本不卡不码高清免费观看| 日韩欧美综合在线| 国产自产视频一区二区三区| 久久人人97超碰com| 国产福利一区二区| 中文字幕日韩av资源站| 在线一区二区视频| 日韩和欧美一区二区| 日韩一区二区精品在线观看| 九九精品视频在线看| 国产日韩欧美在线一区| aaa国产一区| 亚洲五码中文字幕| 欧美一二三区在线| 粉嫩绯色av一区二区在线观看| 国产精品婷婷午夜在线观看| 色偷偷久久一区二区三区| 天天操天天色综合| 久久综合一区二区| 成人高清伦理免费影院在线观看| 亚洲精品国产无套在线观| 制服丝袜亚洲播放| 粉嫩一区二区三区在线看| 亚洲日本丝袜连裤袜办公室| 91精品欧美一区二区三区综合在| 韩国av一区二区三区| 中文字幕一区二区三区不卡| 欧美精品久久久久久久多人混战| 黄色资源网久久资源365|