basedatahandle.cpp

来自「我写的SQL Server网络备份工具。(服务器端用VC开发」· C++ 代码 · 共 147 行

CPP
147
字号
//---------------------------------------------------------------------------


#pragma hdrstop

#include "BaseDataHandle.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

InitCom::InitCom()
{
	m_bInitSucceed = SUCCEEDED(CoInitialize(NULL));
}
InitCom::~InitCom()
{
	if(m_bInitSucceed)
		::CoUninitialize();
}
BOOL InitCom::operator ! ()
{
	return !m_bInitSucceed;
}

PChar::PChar()
      :m_pStr(NULL)
{
}
PChar::PChar(char *p)
{
	_ASSERT(p);
	m_pStr = p;
}
PChar::	~PChar()
{
	if(m_pStr)
		delete []m_pStr;
}
void PChar::Attach(char *p)
{
	if(m_pStr)
		delete []m_pStr;
	m_pStr = p;
}
PChar::operator char * ()
{
	return m_pStr;
}

int sendn(SOCKET sock , char *pBuff , int len)
{
	int nSendLength , nSize;
    nSize = len;
	while(nSize > 0)
	{
		nSendLength = send(sock , pBuff , nSize , 0);
		if(nSendLength < 0)
		{
			return -1;
		}
		if(nSendLength == 0)
		{
			return len - nSize;
		}

		nSize -= nSendLength;
		pBuff += nSendLength;
	}
	return len;
}

int readn(SOCKET sock , char *pBuff , int len)
{
	int nSize = len;
	int nReadLength;

    while(nSize > 0)
	{
		 nReadLength = recv(sock , pBuff , nSize , 0);
		if(nReadLength < 0)
		{
			return -1;
		}
		if(nReadLength == 0)
		{
			return len - nSize;
		}
		nSize -= nReadLength;
		pBuff += nReadLength;
	}
	return len;
}

CInitSocket::CInitSocket()
{
	m_bInitSucceed = (WSAStartup(MAKEWORD(2,2) ,&m_wsaData) == 0);
}

CInitSocket::~CInitSocket()
{
	if(m_bInitSucceed)
	{
		WSACleanup();
	}
}
BOOL CInitSocket::operator ! ()
{
	return !m_bInitSucceed;
}
CInitSocket::operator WSADATA * ()
{
	return &m_wsaData;
}
MySocket::MySocket()
    :m_Socket(INVALID_SOCKET)
{
}
MySocket::MySocket(int af, int type, int protocol)
{
	m_Socket = socket(af , type , protocol);
}
MySocket::~MySocket()
{
	if(m_Socket != INVALID_SOCKET)
	{
		closesocket(m_Socket);
	}
}
MySocket::operator SOCKET ()
{
	return m_Socket;
}
void MySocket::Attach(SOCKET sock)
{
    _ASSERT(m_Socket == INVALID_SOCKET);
	m_Socket = sock;
}
void MySocket::Close()
{
	if(m_Socket != INVALID_SOCKET)
	{
		closesocket(m_Socket);
		m_Socket = INVALID_SOCKET;
	}
}

⌨️ 快捷键说明

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