shppprotocol.cpp

来自「本源码为移动公司话费查询中间件TUXEDO使用的实例」· C++ 代码 · 共 110 行

CPP
110
字号
/*******************************************
* file name:   SHPPProtocol.cpp
* date:        2002.7.24
* 用途:       定义自助话打印协议SHPP
* 作者:       林游海
*******************************************/
#include "SHPPProtocol.h"

char*	CSHPPProtocol::s_pchEOL = "\r\n";
UInt32	CSHPPProtocol::s_unEOLLen = 2;

CStrPtrLen CSHPPProtocol::s_splVersionString[] = 
{
	CStrPtrLen("1.0")
};

CStrPtrLen CSHPPProtocol::s_splErrorString[] = 
{
	CStrPtrLen("请求处理成功"),						 //-0        shppOK
	CStrPtrLen("没有注册非法的IP地址"),				 //-1        shppRegisterErr
	CStrPtrLen("对不起,请你重新登入?"),			 //-2        shppPopedomErr
	CStrPtrLen("密码错误"),							 //-3        shppPasswordErr
	CStrPtrLen("非法请求"),							//-4        shppRequestErr
	
	CStrPtrLen("参数出错"),							//-5        shppParameterErr

	CStrPtrLen("本月话单打印已达限定次数!"),		 //-6        shppPrintErr
	CStrPtrLen("本月没有清单记录"),					 //-7        shppNotListErr
	CStrPtrLen("本月有欠费,请到营业厅交费后再来打印!"),     //-8        shppHaveFeeErr
	CStrPtrLen("版本号出错"),						 //-9        shppVersion
	CStrPtrLen("操作失败"),							 //-10       shppLost,             //0010    操作失败
	CStrPtrLen("默认密码不充许打印!,\r\n请您修改密码后再打印!"),//-11        shppDefaultIsPrint,   //0011    
	CStrPtrLen("今天的话单已打印!"),							//12          shppLimitDay
	CStrPtrLen("你按得太频繁,还在处理上个任务。请稍后!"),       //13          shppSystemErr

	CStrPtrLen("目前不支持自定义查询!"),				//shppPrintMonthErr,     //0014	
	CStrPtrLen("服务器忙。请稍后再试!"),	//shppH2ServerErr,       //0015	
	CStrPtrLen("营业厅管理员没有这个权限"),				//shppPopedomErr3,       //0016	
	CStrPtrLen("用户打印你没有这个权限"),				//shppPopedomErr4,       //0017	
	CStrPtrLen("电话号码与上次不一样你没有这个权限"),	//shppPopedomErr5,        //0018	
	CStrPtrLen("你选的月份不能打印,请重新按键!"),		//shppPrintLimit,        //0019	
	CStrPtrLen("电话号码输入有误,请重新输入!"),	    //shppPopedomErr7,       //0020	
	CStrPtrLen("在线更新错误"),	                        //shppOpdataErr  ,       //0021	
	CStrPtrLen("接口服务器忙,请您再试一次!"),	        //shppServerErr  ,       //0022	连接接口服务器发回错误结果
	CStrPtrLen("服务程序忙,请您再试一次!"),
	CStrPtrLen("此号码办理了详单屏蔽业务,不能打印"),
	CStrPtrLen("连接营业数据库失败"),
	CStrPtrLen("此号码是超低端用户,不能打印"),
	CStrPtrLen("服务器获取随机密码失败,请您再试一次"),//shppPasserr2
	CStrPtrLen("请机主持本人身份证到前台办理清单查询密码"),//shppPasserr2
	CStrPtrLen("您号段比较新请联系管理人员"),//
	CStrPtrLen("请确认输入的是移动公司的用户号码"),//
	CStrPtrLen("功能未实现")							//-23       shppNotDefine
};

CSHPPProtocol::SHPPVersion
CSHPPProtocol::GetVersion(CStrPtrLen &versionStr)
{
	if (versionStr.m_unLen != 3)
		return kIllegalVersion;
	else
		return k10Version;
}
UInt16	CSHPPProtocol::GetServerType(const LPSCHAR lpRequestHead)
{
	char chType[knTypeOffset+1];

	memcpy(chType,lpRequestHead + knType,knTypeOffset);
	chType[knTypeOffset] = '\0';

	return atoi(chType);
}
//获取包体的长度
UInt32   CSHPPProtocol::GetPacketLen(const LPSCHAR lpRequestHead)
{
	char chType[knLengthOffset+1];


	memcpy(chType,lpRequestHead + knLength,knLengthOffset);
	chType[knLengthOffset] = '\0';

	return atoi(chType);
}

UInt16	CSHPPProtocol::GetTel(const LPSCHAR lpRequestHead,char *pTel)
{
	char *pTemp,*pHead ;
	pHead = lpRequestHead + knTel;
	
	pTemp = pHead;
	for(int i = 0 ;i < knTelOffset;i++)
	{
		if(*pTemp == ' ' )
			break;
		pTemp++;
	}
	memcpy(pTel,pHead,pTemp - pHead );
	pTel[pTemp - pHead] = '\0';
	return 0;
}

//获取包体的标志位
UInt32   CSHPPProtocol::GetPacketM(const LPSCHAR lpRequestHead)
{
	if(lpRequestHead[knM] == '1')
		return 1;
	return 0;
}

⌨️ 快捷键说明

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