| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 | 
							- // SendSocket.cpp: implementation of the CSendSocket class.
 
- //
 
- //////////////////////////////////////////////////////////////////////
 
- #include "stdafx.h"
 
- #include "cp_main.h"
 
- #include "SendSocket.h"
 
- #include "TextConvert.h"
 
- #ifdef _DEBUG
 
- #undef THIS_FILE
 
- static char THIS_FILE[]=__FILE__;
 
- #define new DEBUG_NEW
 
- #endif
 
- //////////////////////////////////////////////////////////////////////
 
- // Construction/Destruction
 
- //////////////////////////////////////////////////////////////////////
 
- CSendSocket::CSendSocket()
 
- {
 
- 	m_pEncryptor = new CEncryption;
 
- 	m_Connection = NULL;
 
- }
 
- CSendSocket::~CSendSocket()
 
- {
 
- 	delete m_pEncryptor;
 
- 	m_pEncryptor = NULL;
 
- }
 
- BOOL CSendSocket::SendCSendData(CSendInfo &data, MyEnums::eSendType type)
 
- {
 
- 	data.m_Type = type;
 
- 	return SendExactSize((char *)&data, sizeof(CSendInfo), true);
 
- }
 
- BOOL CSendSocket::SendExactSize(char *pData, long lLength, bool bEncrypt)
 
- {
 
- 	BOOL bRet = FALSE;
 
- 	if(!m_pEncryptor && bEncrypt)
 
- 	{
 
- 		ASSERT(!"Encryption not initialized");
 
- 		LogSendRecieveInfo("SendExactSize::Encryption not initialized");
 
- 		return bRet;
 
- 	}
 
- 	LogSendRecieveInfo(StrF(_T("START SendExactSize Total %d"), lLength));
 
- 	UCHAR* pOutput = (UCHAR*)pData;
 
- 	int nLenOutput = lLength;
 
- 	long lBytesRead = 0;
 
- 	if(bEncrypt == false || m_pEncryptor->Encrypt((UCHAR*)pData, lLength, g_Opt.m_csPassword, pOutput, nLenOutput))
 
- 	{
 
- 		long lExpected = nLenOutput;
 
- 		while(lBytesRead < lExpected)
 
- 		{
 
- 			long lSize = send(m_Connection, (char*)pOutput + lBytesRead, lExpected - lBytesRead, 0);
 
- 		
 
- 			if(lSize == SOCKET_ERROR || lSize == 0)
 
- 			{
 
- 				LogSendRecieveInfo(StrF(_T("lSize == SOCKET_ERROR, %d"), WSAGetLastError()));
 
- 				bRet = FALSE;
 
- 				break;
 
- 			}
 
- 			lBytesRead += lSize;
 
- 		}
 
- 		if(lBytesRead == lExpected)
 
- 			bRet = TRUE;
 
- 		if(pOutput != (UCHAR*)pData)
 
- 			m_pEncryptor->FreeBuffer(pOutput);
 
- 	}
 
- 	else
 
- 	{
 
- 		LogSendRecieveInfo("SendExactSize::Failed to encrypt data");
 
- 	}
 
- //	LogSendRecieveInfo(StrF(_T("END SendExactSize Total %d"), lBytesRead));
 
- 	return bRet;
 
- }
 
 
  |