Example #1
0
	void ReceiveData(CTcpClient* tcpClient, CStringBuffer& buffer)
	{
		CScopedLock _lock;
		CStringBuffer responseString;
		CByteBuffer responseBuffer;
		dword numDataReceived = 0;
		dword totalDataReceived = 0;
		CStringConstIterator itB;
		CStringBuffer sBuffer;
		dword numData;

		for ( ; totalDataReceived < 10; )
		{
			responseBuffer.set_BufferSize(__FILE__LINE__ totalDataReceived + MAX_BUFFER);
			_lock.unlock();
			tcpClient->ReceiveData(responseBuffer.get_Buffer() + totalDataReceived, MAX_BUFFER, &numDataReceived);
			totalDataReceived += numDataReceived;
			_lock.lock();
			responseBuffer.set_BufferSize(__FILE__LINE__ totalDataReceived);
		}
		responseString.convertFromByteBuffer(responseBuffer);
		itB = responseString.GetString();
		buffer = responseString;
		if ( (itB[0] == _T('#')) && (itB[1] == _T('#')) && (itB[7] == _T('#')) && (itB[8] == _T('#')) )
		{
			responseString.SubString(2, 5, sBuffer);
			if ( sBuffer.ScanString(_T("%u"), &numData) <= 0 )
				return;
		}
		else
			return;
		for ( ; totalDataReceived < (10 + numData); )
		{
			responseBuffer.set_BufferSize(__FILE__LINE__ totalDataReceived + MAX_BUFFER);
			_lock.unlock();
			tcpClient->ReceiveData(responseBuffer.get_Buffer() + totalDataReceived, MAX_BUFFER, &numDataReceived);
			totalDataReceived += numDataReceived;
			_lock.lock();
			responseBuffer.set_BufferSize(__FILE__LINE__ totalDataReceived);
		}
		responseString.convertFromByteBuffer(responseBuffer);
		responseString.SubString(10, numData, buffer);
	}
Example #2
0
static void TestTCPClientKeepAlive_SendData(CTcpClient& tcpClient, const CStringBuffer& buffer)
{
	CStringBuffer sBuffer;
	CByteBuffer bBuffer;
	dword numBytesSend;

	sBuffer.FormatString(__FILE__LINE__ _T("##%05d## %s"), buffer.GetLength(), buffer.GetString());
	sBuffer.convertToByteBuffer(bBuffer);
	tcpClient.SendData(bBuffer.get_Buffer(), bBuffer.get_BufferSize(), &numBytesSend);
	assert(numBytesSend == bBuffer.get_BufferSize());
}
Example #3
0
	void SendData(CTcpClient* tcpClient, const CStringBuffer& buffer)
	{
		CScopedLock _lock;
		CStringBuffer sBuffer;
		CByteBuffer bBuffer;
		dword numBytesSend;

		sBuffer.FormatString(__FILE__LINE__ _T("##%05d## %s"), buffer.GetLength(), buffer.GetString());
		sBuffer.convertToByteBuffer(bBuffer);
		_lock.unlock();
		tcpClient->SendData(bBuffer.get_Buffer(), bBuffer.get_BufferSize(), &numBytesSend);
		assert(numBytesSend == bBuffer.get_BufferSize());
	}