123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186 |
- //在ConnectSocket.cpp文件中实现连接套接字的创建,该类是CConnectThread类的
- //一部分,收到数据由函数OnReceive()完成处理。 movenext 4096
- #include "stdafx.h"
- #include "DBServer.h"
- #include "theDBServer.h"
- #include "ConnectSocket.h"
- #include "ConnectThread.h"
- #include "DBServerDlg.h"
- #include "DataSocket.h"
- #include "mysqldata.h"
- #include "./include/netMain.h"
- #include "./include/protocolhdr.h"
- #include "./include/struct_def.h"
- #include "Lzari.h"
- #include "MyLock.h"
- #include "Shlwapi.h"
- #include "CalendarConvert.h"
- #include "AddUserDlg.h"
- #include "NetShareInfo.h"
- #include "AdoImplSvr.h"
- #include "DataDef.h"
- #ifdef _DEBUG
- #define new DEBUG_NEW
- #undef THIS_FILE
- static char THIS_FILE[] = __FILE__;
- #endif
- extern void CovertDate(CString &date, CString &date2);
- extern void ConvertToPrice(CString &str);
- extern CDBServerDlg* g_pMainWnd;
- extern CtheDBServer theServer;
- extern CtheDBServer* g_pWndServer;
- void CConnectSocket::GetDataFromCode5(BYTE &code, BYTE **szDataBuf, DWORD &nDataLen, DWORD &arraysize, CString filter)
- {//m_List1array
- int nStep = 0;
- try
- {
- if (g_ListData[code])
- delete[](g_ListData[code]);
- g_ListData[code] = NULL;
- nStep = 1;
- DWORD ii = 0;
- CArray<CStringArray, CStringArray> listArray;
- try
- {
- switch (code)
- {
- case 1: //执行sql语句
- {
- if(m_pAdoImpl == NULL)
- return;
- if(filter == _T(""))
- return;
- TCHAR tszSql[4096] = {0};
- wsprintf(tszSql, _T("%s"), filter);
- m_pAdoImpl->Execute(tszSql);
- }
- break;
- case 2: //log
- {
- int nFieldCount = 0;
- CDataBase* p = new Tbl2015;
- CTime tm = CTime::GetCurrentTime();
- CString strTableName = _T("");
- strTableName.Format(_T("[%s]"), tm.Format(_T("%Y")));
- CString strSQL = _T("");
- if(filter == _T(""))
- strSQL = _T("select * from ") + strTableName;
- else
- strSQL = _T("select * from ") + strTableName + _T(" where ") + filter;
- p->GetRecordSet(m_pAdoImpl, strTableName, filter.GetString(), strSQL, nFieldCount, listArray);
- delete p;
- }
- break;
- }
-
- }
- #if JEFF_TEST_ON
- catch (CException* e)
- {
- TCHAR szError[1024] = { 0 };
- e->GetErrorMessage(szError, 1024);
- WriteLogin(CString(szError));
- e->Delete();
- CString ss;
- ss.Format("#出错在函数getdata中-code:%d/%d ip:%s", code, nStep, ((CConnectThread *)AfxGetThread())->m_strRemoteHost);
- WriteLogin(ss);
- return;
- }
- #else
- catch(CDBException * e)
- {
- WriteLogin(e->m_strError);
- CString ss;
- ss.Format ("#出错在函数getdata中-code:%d/%d ip:%s", code, nStep, ((CConnectThread *)AfxGetThread())->m_strRemoteHost);
- WriteLogin(ss);
- e->Delete();
- return;
- }
- #endif
- nStep = 2;
- CMemFile memfile;
- CArchive ar(&memfile, CArchive::store);
- for (ii = 0; ii < listArray.GetSize(); ii++)
- {
- listArray.ElementAt(ii).Serialize(ar);
- }
- ar.Close();
- nStep = 3;
- if (g_ListData[code])delete[](g_ListData[code]); g_ListData[code] = NULL;
- nStep = 4;
- int leng = memfile.GetLength();
- BOOL bZip = 0;
- BOOL bOK = 0;
- int lengtemp = leng;
- while (lengtemp)
- {
- if (lengtemp % 2 == 0)
- {
- lengtemp /= 2;
- if (lengtemp == 1)
- {
- bOK = 1;
- break;
- }
- }
- else
- break;
- }
- nStep = 5;
- if (leng < 10240 || bOK)
- {
- g_ListData[code] = memfile.Detach();
- nDataLen = g_ListLeng[code] = leng;
- *szDataBuf = g_ListData[code];
- arraysize = g_ListSize[code] = listArray.GetSize();
- }
- else
- {
- bZip = 1;
- BYTE *pData = memfile.Detach();
- const BYTE *lpszOut = NULL;
- int nOutSize = 0;
- LZARI Lzari;
- Lzari.Compress(pData, leng, lpszOut, nOutSize);
- delete[]pData;
- g_ListData[code] = new BYTE[nOutSize];
- memcpy(g_ListData[code], lpszOut, nOutSize); Lzari.Release();
- nDataLen = g_ListLeng[code] = nOutSize;
- *szDataBuf = g_ListData[code];
- arraysize = g_ListSize[code] = listArray.GetSize();
- }
- code = bZip;
- nStep = 6;
- }
- #if JEFF_TEST_ON
- catch (CException* e)
- {
- CString ss;
- ss.Format("出错在函数getdata中-code:%d/%d ip:%s", code, nStep, ((CConnectThread *)AfxGetThread())->m_strRemoteHost);
- WriteLogin(ss);
- TCHAR szError[1024] = { 0 };
- e->GetErrorMessage(szError, 1024);
- WriteLogin(CString(szError));
- e->Delete();
- }
- #else
- catch(...)
- {
- CString ss;
- ss.Format ("出错在函数getdata中-code:%d/%d ip:%s", code, nStep, ((CConnectThread *)AfxGetThread())->m_strRemoteHost);
- WriteLogin(ss);
- }
- #endif
- }
|