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 + -
显示快捷键?