⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cmpp.cpp

📁 河南移动的cmpp的基础类
💻 CPP
字号:
#include "stdafx.h"
#include "cmpp.h"

#pragma comment(lib,"Ws2_32")
short CMPP_Sequence = 0;
short CMPP_MsgID = 0;

CMPP_Head::CMPP_Head()
{
	TotalLength=htonl(sizeof(CMPP_Head));
	CommandID=0;
	SequenceID=0;
}
CMPP_Head::~CMPP_Head()
{
}

int CMPP_Head::ASCII_To_UNICOD(LPCSTR pSource, char * pUnicodeBuffer)
{
	int r,i=0;
	BYTE byte;
	char buffer[1024];

	memset(pUnicodeBuffer, 0, strlen(pSource)*2);

	int len = (int)strlen(pSource);
	r = ::MultiByteToWideChar(CP_ACP, 0, pSource, (int)strlen(pSource), (LPWSTR)pUnicodeBuffer, len );
	if(r <= 0 )
		return r;

	if(len < (int)strlen(pSource)*2 )
	{
		strcpy(buffer, pSource);
		len = 0;
		for(i=0;i < (int)strlen(buffer); i++)
		{
			if(((int)buffer[i]&0xff) < 0x80)
				len += 2;
			else
				len ++;
		}
	}
	for(i=0;i<len/2;i++)
	{
		byte = *(pUnicodeBuffer+2*i);
		*(pUnicodeBuffer+2*i) = *(pUnicodeBuffer+2*i+1);
		*(pUnicodeBuffer+2*i+1) = byte;
	}
	*(pUnicodeBuffer + len) = L'\0';
	return len;
}

int CMPP_Head::UCS2_To_ASCII(LPCWSTR pSource,int len,char * pBuffer)
{
	BYTE b;
	for(int i=0; i<len/2; i++)
	{
		b = *((char *)pSource + 2*i);
		*((char *)pSource + 2*i) = *((char *)pSource + 2*i + 1);
		*((char *)pSource + 2*i + 1) = b;
	}

	CString Ret(pSource);
	sprintf(pBuffer, "%s", Ret);
	return len/2;
}

int CMPP_Head::UNICOD_To_ASCII(LPCWSTR pSource,int len,char * pBuffer)
{
	BOOL bUsedDefault;

	BYTE b;
	for(int i=0; i<len/2; i++)
	{
		b = *((char *)pSource + 2*i);
		*((char *)pSource + 2*i) = *((char *)pSource + 2*i + 1);
		*((char *)pSource + 2*i + 1) = b;
	}

	int ret = ::WideCharToMultiByte(CP_ACP, 0, pSource, (int)wcslen(pSource), pBuffer, (int)wcslen(pSource)/2 + 1, "", &bUsedDefault);

	return (ret > 0 && !bUsedDefault) ? ret : 0 ;
}

CMPP_Connect::CMPP_Connect(void)
{
	TotalLength=htonl(sizeof(CMPP_Connect));
	CommandID=htonl(CMPP_Msg::CONNECT);
	SequenceID=htonl(CMPP_Sequence++);
	ZeroMemory(SourceAddr,6);
	ZeroMemory(Authenticator,16);
	Version=0x20;
	SYSTEMTIME t;
	GetLocalTime(&t);
	char temp[80];
	sprintf(temp,"%02d%02d%02d%02d%02d",t.wMonth,t.wDay,t.wHour,t.wMinute,t.wSecond);
	Timestamp=0;
}
CMPP_Connect::~CMPP_Connect(void)
{
}

CMPP_ConnectResp::CMPP_ConnectResp(void)
{
	TotalLength=htonl(sizeof(CMPP_ConnectResp));
	CommandID=htonl(CMPP_Msg::CONNECT_RESP);
	SequenceID=htonl(CMPP_Sequence++);
	Status=0;
	ZeroMemory(Authenticator,16);
	Version=0;
}
CMPP_ConnectResp::~CMPP_ConnectResp(void)
{

}
CMPP_Terminate::CMPP_Terminate(void)
{
	ZeroMemory(this,sizeof(CMPP_Terminate));
	TotalLength=htonl(sizeof(CMPP_ConnectResp));
	CommandID=htonl(CMPP_Msg::TERMINATE);
	SequenceID=htonl(CMPP_Sequence++);

}
CMPP_Terminate::~CMPP_Terminate(void)
{

}

CMPP_TerminateResp::CMPP_TerminateResp(void)
{
	ZeroMemory(this,sizeof(CMPP_Terminate));
	TotalLength=htonl(sizeof(CMPP_ConnectResp));
	CommandID=htonl(CMPP_Msg::TERMINATE_RESP);
	SequenceID=htonl(CMPP_Sequence++);

}
CMPP_TerminateResp::~CMPP_TerminateResp(void)
{
}

CMPP_ActiveTest::CMPP_ActiveTest(void)
{
	ZeroMemory(this,sizeof(CMPP_ActiveTest));
	TotalLength=htonl(sizeof(CMPP_ActiveTest));
	CommandID=htonl(CMPP_Msg::ACTIVE_TEST);
	SequenceID=htonl(CMPP_Sequence++);
}
CMPP_ActiveTest::~CMPP_ActiveTest(void)
{
}

CMPP_ActiveTestResp::CMPP_ActiveTestResp(void)
{
	ZeroMemory(this,sizeof(CMPP_ActiveTestResp));
	TotalLength=htonl(sizeof(CMPP_ActiveTestResp));
	CommandID=htonl(CMPP_Msg::ACTIVE_TEST_RESP);
	SequenceID=htonl(CMPP_Sequence++);
}
CMPP_ActiveTestResp::~CMPP_ActiveTestResp(void)
{

}

CMPP_Submit::CMPP_Submit(void)
{
	ZeroMemory(this,sizeof(CMPP_Submit));
	TotalLength=htonl(sizeof(CMPP_Submit));
	CommandID=htonl(CMPP_Msg::SUBMIT);
	SequenceID=htonl(CMPP_Sequence++);

	Msg_level=1;
	Pk_total=1;
	Pk_number=1;
	Registered_Delivery=1;
	Msg_Fmt=15;
	DestUsr_tl=1;

}
CMPP_Submit::~CMPP_Submit(void)
{
}

CMPP_SubmitResp::CMPP_SubmitResp(void)
{
	ZeroMemory(this,sizeof(CMPP_SubmitResp));
	TotalLength=htonl(sizeof(CMPP_SubmitResp));
	CommandID=htonl(CMPP_Msg::SUBMIT_RESP);
	SequenceID=htonl(CMPP_Sequence++);

}
CMPP_SubmitResp::~CMPP_SubmitResp(void)
{
}

CMPP_Deliver::CMPP_Deliver(void)
{
	ZeroMemory(this,sizeof(CMPP_Deliver));
	TotalLength=htonl(sizeof(CMPP_Deliver));
	CommandID=htonl(CMPP_Msg::DELIVER);
	SequenceID=htonl(CMPP_Sequence++);
}
CMPP_Deliver::~CMPP_Deliver(void)
{
}

CMPP_DeliverResp::CMPP_DeliverResp(void)
{
	ZeroMemory(this,sizeof(CMPP_DeliverResp));
	TotalLength=htonl(sizeof(CMPP_DeliverResp));
	CommandID=htonl(CMPP_Msg::DELIVER_RESP);
	SequenceID=htonl(CMPP_Sequence++);
}
CMPP_DeliverResp::~CMPP_DeliverResp(void)
{
}

CMPP_Query::CMPP_Query(void)
{
	ZeroMemory(this,sizeof(CMPP_Query));
	TotalLength=htonl(sizeof(CMPP_Query));
	CommandID=htonl(CMPP_Msg::QUERY);
	SequenceID=htonl(CMPP_Sequence++);
}
CMPP_Query::~CMPP_Query(void)
{
}

CMPP_QueryResp::CMPP_QueryResp(void)
{
	ZeroMemory(this,sizeof(CMPP_QueryResp));
	TotalLength=htonl(sizeof(CMPP_QueryResp));
	CommandID=htonl(CMPP_Msg::QUERY_RESP);
	SequenceID=htonl(CMPP_Sequence++);
}
CMPP_QueryResp::~CMPP_QueryResp(void)
{
}

int CMPP_Head::GetMsgID(char * pMsgID)
{
	DWORD time=0;
	DWORD temp;

	ZeroMemory(pMsgID,8);
	SYSTEMTIME t;
	GetLocalTime(&t);

	temp=t.wMonth;
	time=time|temp<<26;

	temp=t.wDay;
	time=time|temp<<21;

	temp=t.wHour;
	time=time|temp<<16;

	temp=t.wMinute;
	time=time|temp<<11;

	temp=t.wSecond;
	time=time|temp<<6;

	memcpy(pMsgID,&time,3);
	short sequence=CMPP_Sequence++;
	memcpy(pMsgID+6,&sequence,2);

	return 8;

}

⌨️ 快捷键说明

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