⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 curequesthandler.cpp

📁 天之炼狱1服务器端源文件游戏服务端不完整
💻 CPP
字号:
//--------------------------------------------------------------------------------//// Filename    : CURequestHandler.cpp// Written By  : Reiot////--------------------------------------------------------------------------------// include files#include "CURequest.h"#ifdef __UPDATE_SERVER__	#include <sys/types.h>	#include <stdio.h>	#include <fcntl.h>	#include <unistd.h>	#include <sys/sendfile.h>	#include "Properties.h"	#include "UpdateServerPlayer.h"	#include "Upackets/UCUpdate.h"	#include "Resource.h"#endif//--------------------------------------------------------------------------------//// 努扼捞攫飘啊 夸没茄 府家胶啊 粮犁窍绰瘤 眉农茄 饶,// 粮犁且 版快, sendfile()阑 荤侩秦辑 努扼捞攫飘肺 傈价茄促.////--------------------------------------------------------------------------------void CURequestHandler::execute ( CURequest * pPacket , Player * pPlayer )	 throw ( ProtocolException , Error ){	__BEGIN_TRY		#ifdef __UPDATE_SERVER__	UpdateServerPlayer * pUpdateServerPlayer = dynamic_cast<UpdateServerPlayer*>(pPlayer);	Socket * pSocket = pUpdateServerPlayer->getSocket();	const Resource & resource = pPacket->getResource();	Version_t ClientVersion = 0;	if( resource.getVersion() < 2000 ) {		ClientVersion = 1;	}	char filename[ maxFilename + 1 ];	sprintf( filename , "%s/%s/v%05d/%s" ,		g_pConfig->getProperty("HomeDir").c_str() ,		g_pConfig->getProperty("PatchDir").c_str() ,//		resource.getVersion() , 		ClientVersion, 		resource.getFilename().c_str() 	);	//cout << "Try to open " << filename << "..." << endl;	ifstream ifile( filename , ios::in | ios::binary | ios::nocreate );			if ( !ifile ) {		// 粮犁窍瘤 臼绰 颇老阑 夸没茄 巴篮 秦欧栏肺 埃林茄促.		// 肺弊甫 茄 饶, BAN 矫难具 茄促.		throw InvalidProtocolException(filename);	}	// 颇老 农扁甫 舅酒郴扁 困秦辑 颇老 器牢磐甫 盖 第肺 框流牢促.	ifile.seekg( 0 , ios::end );	FileSize_t filesize = ifile.tellg();	//cout << "Original FileSize  : " << filesize << endl;	//cout << "Requested FileSize : " << resource.getFileSize() << endl;	// 努扼捞攫飘俊辑 夸没茄 颇老狼 农扁客 促甫 版快, 秦欧 矫档肺 埃林茄促.	if ( resource.getFileSize() != filesize ) {		throw InvalidProtocolException("invalid filesize");	}	//--------------------------------------------------------------------------------	// CURequest 俊 淬败柯 府家胶甫 促矫 UCUpdate 俊 淬酒辑 刚历 傈价茄促.	// 弊促澜 颇老 郴侩阑 傈价茄促.	//--------------------------------------------------------------------------------	UCUpdate ucUpdate;	ucUpdate.setResource( resource );		pUpdateServerPlayer->sendPacket( &ucUpdate );	//--------------------------------------------------------------------------------	// write file content	//--------------------------------------------------------------------------------	// 颇老 器牢磐甫 促矫 盖 贸澜栏肺 登倒赴促.	ifile.seekg(0);	long offset = 0;	//cout << "=======================================================================" << endl;	//cout << resource.getFilename() << " (" << filesize << "bytes) : ";	// 颇老 郴侩阑 傈价茄促.	DWORD nSent = sendfile( pSocket->getSOCKET() , ifile.rdbuf()->fd() , &offset, filesize );	//cout << nSent << " bytes sent to client." << endl;	//cout << "=======================================================================" << endl;	if ( nSent != filesize ) {		throw Error("颇老 傈价 坷幅");	}	// 颇老阑 摧绰促.	ifile.close();	pUpdateServerPlayer->setPlayerStatus( USPS_AFTER_SENDING_UC_UPDATE );#endif			__END_CATCH}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -