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

📄 sample.txt

📁 文件传输代码
💻 TXT
字号:
#define PRE_AGREED_PORT		8686
#define RECV_BUFFER_SIZE	4096

BOOL CMainClnt::DownloadOverDrawing(int nDrawingID,int& nLength,LPBYTE* ppFile,LPVOID ptr,BOOL bRecord)
{
	*ppFile=NULL;
	PACKETHEADER headerReq;
	headerReq.nCmd   = CMD_NBMANAGE;
	headerReq.wParam = NBMANAGE_DOWNLOAD_DRAWING;
	CVHPacket packetReq(CVHPacket::store);
	packetReq.SetPacketHeader(headerReq);
	CArchive& arReq = packetReq.GetArchive();
	arReq << nDrawingID;
	arReq << g_pCommonDM->m_pLoginUser->m_strLoginID;
	arReq << bRecord;
	packetReq.Close();

	// send packet
	CVHPacket packetAns(CVHPacket::load);
	if (!SendPacket(&packetReq, &packetAns, 600000)) // 10 minutes
	{
		ERRSTR_MSGBOX(MSG(VH_IDS_CONNECT_TIMEOUT));
		return FALSE;
	}

	// process answering packet
	PACKETHEADER& headerAns = packetAns.GetPacketHeader();
	int nErrCode = headerAns.nErrCode;
	if (E_SUCCESS == nErrCode)
	{

		CArchive& arAns = packetAns.GetArchive();
		CString strClientPath="c:\\temp\\__temp.dat";
		CFile file;
		BOOL bOpen = file.Open(strClientPath, CFile::modeCreate|CFile::modeWrite, NULL);
		if(!bOpen)
		{
			AfxMessageBox("文件创建或打开失败!请确认路径再重试!");
			return FALSE;
		}
		file.Close();
		MSGREQUEST msgRequest;
		msgRequest.iCommand = FILEDATA;
		msgRequest.lFileLength = 0;
		msgRequest.lFileOffset = 0;
		strcpy(msgRequest.sClientPath, strClientPath.GetBuffer(0));
		strcpy(msgRequest.sServerPath, "\0"); 

		m_pClient->RequestFile(msgRequest);
		CFile diskfile;
		bOpen = diskfile.Open(strClientPath, CFile::modeRead, NULL);
		if(bOpen)
		{
			int filelength=diskfile.GetLength();
			nLength=filelength;
			*ppFile=(LPBYTE)malloc(filelength);
			diskfile.Read((BYTE*)*ppFile,filelength);
		}
		else
			nLength=0;
		diskfile.Close();
	}
	return (E_SUCCESS == nErrCode);	
	
}
//server端

#define PRE_AGREED_PORT		8686
#define SEND_BUFFER_SIZE	4096

	CString strPath;
	CTCPServer_FT* m_pServer = new CTCPServer_FT(strPath,NULL);
	if(m_pServer != NULL)
	{
		m_pServer->SetListenPort(PRE_AGREED_PORT);
		m_pServer->ListenRequest();
	}


BOOL CMainSvr::DownloadDrawing(CVHPacket* pPacket,SOCKET s)
{
	if (NULL == pPacket)	  return FALSE;
	if (INVALID_SOCKET == s)  return FALSE;
	
	int nErrCode = E_SUCCESS;
	CDatabaseEx* pDB = NULL;
	CString	strLoginID;
	int	nDrawingID;
	LPBYTE	pFile=NULL;
	int		nSize=0;
	CString strDescription, strEventName, strEventDescription;
	int	nEventID=EVENT_NBMANAGE_DOWNLOADDRAWING;
	CString	strName;
	BOOL	bRecord;
	CFile file;
	BOOL bFileIsOpen = FALSE;
	CString strPath;
	try
	{
		CArchive& arReq = pPacket->GetArchive();
		arReq>>nDrawingID;
		arReq>>strLoginID;
		arReq>>bRecord;
		if ((pDB = g_pDBPool->GetConnection(0)) == NULL)
			throw(E_OPEN_DB);
		int nFolderID=-1;
		int	nDataID=-1;
		CODrawingSet OverDrawingInfo(pDB);
		OverDrawingInfo.m_strFilter.Format("DrawingID=%d",nDrawingID);
		OverDrawingInfo.Open(CRecordset::snapshot, NULL, CRecordset::readOnly);
		if (OverDrawingInfo.GetRecordCount() > 0)
		{
			strName=OverDrawingInfo.m_FileName;
			nFolderID=OverDrawingInfo.m_FolderNo;
			nDataID=OverDrawingInfo.m_AmendmentNo;
			OverDrawingInfo.Close();
		}
		if (nFolderID==-1||nDataID==-1) 
		{
			throw E_EXCEPTION;
		}
		strPath = GetItemFileName(nDataID);// GetDrawingPath(nFolderID, nDataID);
	}
	catch (int nError)
	{
		nErrCode = nError;
	}
	catch (CDBException *e)
	{
		TRACE("DBException: %s\n", e->m_strError);
		RECORD_EXCEPTION(e);
		nErrCode = E_EXCEPTION;
		e->Delete();
	}
	

	//-----------------
	// send packet
	//-----------------
	PACKETHEADER header;
	header.nCmd		= CMD_NBMANAGE;
	header.wParam	= NBMANAGE_DOWNLOAD_DRAWING; 
	header.nErrCode = nErrCode;
	CVHPacket packetAns(CVHPacket::store);
	packetAns.SetPacketHeader(header);

	if (E_SUCCESS == nErrCode)
	{	
		CArchive& arAns = packetAns.GetArchive();
		packetAns.Close(); 

	}
	BOOL bRet = SendPacket(&packetAns, s);
	TRY
		{
/*		pFile = NULL;
		if (!(bFileIsOpen =file.Open(strPath, CFile::modeRead) ))
			throw(E_EXCEPTION);
		nSize = file.GetLength();
		*/
//		file.Close();
		m_pServer->SetFileName(strPath);
	}
	CATCH_ALL(e)
			{
//		if (pFile)
//			free(pFile);
//		nSize = 0;
		throw E_EXCEPTION;
			}
	END_CATCH_ALL
	if (bRecord)
			{
		if (!GetEventNameAndDescription(pDB, nEventID, strEventName, strEventDescription, 1))
				throw E_OPEN_TABLE;
		strDescription.Format(strEventDescription, strName);
		RecordEvent(pDB, nEventID, EVENT_TYPE_NBMANAGE, strDescription, strLoginID);				
	}

	// clear up
//	if (pFile)
//		free(pFile);
	g_pDBPool->ReturnConnection(pDB);
	return bRet;

}

⌨️ 快捷键说明

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