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

📄 wjdpacket.cpp

📁 一个SGIP网关的程序源码.vc代码
💻 CPP
字号:
// WJDPacket.cpp: implementation of the CWJDPacket class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "SGIPGateWay.h"
#include "WJDPacket.h"
#include "systemprofile.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CWJDPacket::CWJDPacket()
{

}

CWJDPacket::~CWJDPacket()
{

}

int CWJDPacket::GetPacket(BYTE *lpBuffer, int nCmdType, LPCTSTR strSender, LPCTSTR strSendTo, LPCTSTR strMsg)
{
	if( !lpBuffer )
		return 0;
	MessagePack Pack;
	memset(&Pack, 0, sizeof(Pack));

	Pack.Protocol[0] =gProfile.mstrProtocol.GetLength();
//	memcpy(&Pack.Protocol[1], "GZSMS", 5);
	memcpy(&Pack.Protocol[1],gProfile.mstrProtocol, Pack.Protocol[0]);
	// Service_Type, Version, Account, CommandType, ComputerName 不需要填
	Pack.Sender[0] = strlen(strSender);
	memcpy(&Pack.Sender[1], strSender, Pack.Sender[0]);

	Pack.Sendto[0] = strlen(strSendTo);
	memcpy(&Pack.Sendto[1], strSendTo, Pack.Sendto[0]);

	Pack.Msg[0] = strlen(strMsg);
	memcpy(&Pack.Msg[1], strMsg, Pack.Msg[0]&0xff);

	memcpy(lpBuffer, &Pack, sizeof(Pack));

	return sizeof(Pack);
}
void CWJDPacket::ParsePacket(BYTE *lpBuffer, int *pnCmdType, LPTSTR strSender, LPTSTR strSendTo, LPTSTR strMsg)
{
	MessagePack  Message_info;
	memcpy(&Message_info, lpBuffer, sizeof(Message_info));
	// 解包
	if( pnCmdType )
		*pnCmdType = Message_info.CommandType;

	if( strSender )
	{
		memcpy(strSender,&Message_info.Sender[1],Message_info.Sender[0]);
		strSender[Message_info.Sender[0]] = 0;
	}
	if( strSendTo )
	{
		memcpy(strSendTo, &Message_info.Sendto[1], Message_info.Sendto[0]);
		strSendTo[Message_info.Sendto[0]] = 0;
		CString str = CHelpFunc::GetRealNumber(strSendTo);
		strcpy(strSendTo,str);
	}
	if( strMsg )
	{
		memcpy(strMsg,&Message_info.Msg[1], Message_info.Msg[0]&0xff);
		strMsg[Message_info.Msg[0]&0xff] = 0;
	}
}
void CWJDPacket::GetAccountInfo(BYTE *lpBuffer, int *nFeeType, LPTSTR strServiceCode, LPTSTR strFeeValue)
{
	MessagePack Message_info;
	memcpy(&Message_info, lpBuffer, sizeof(Message_info));
	// 取出计费信息
	char *p = Message_info.Account;
	char strtmp[20];
	memset(strtmp, 0, sizeof(strtmp));
	if( strServiceCode )
	{
		p = Message_info.Account + 7;
		memcpy(strtmp, p, 3);
		strcpy(strServiceCode, strtmp);
	}
	if( nFeeType )
	{
		//p = Message_info.Account + 9;
		p = Message_info.Account + 10;
		strtmp[0] = *p;
		switch(*p)
		{
		case '0':
			*nFeeType = 1;
			break;
		case '1':
			*nFeeType = 2;
			break;
		case '2':
			*nFeeType = 3;
			break;
		default:
			*nFeeType = 4;
			break;
		}
	}
	
	if( strFeeValue )
	{
		memset(strtmp, 0, sizeof(strtmp));
		//strtmp[0] = '0';
		//p = Message_info.Account + 10;
		p = Message_info.Account + 11;
		//memcpy(&strtmp[1], p, 4);
		memcpy(strtmp, p, 4);
		strcpy(strFeeValue, strtmp);
	}
}

⌨️ 快捷键说明

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