📄 sample.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 + -