📄 hgsmsenddlg.cpp
字号:
ltocpy(sendstring+i,h.command_id);
i+=4L;
ltocpy(sendstring+i,h.sequence.code);
i+=4L;
ltocpy(sendstring+i,h.sequence.time);
i+=4L;
ltocpy(sendstring+i,h.sequence.sequence);
i+=4L;
sprintf(buffer,"SEND: UNBIND TO %s",SERVER_ADR);
xprintf(buffer,"OK");
m_connect=0;
// TcpClient.SocketSend(sendstring,h.command_length,TCP_PORT,SERVER_ADR);
TcpClient.SendTo((const void *)sendstring,h.command_length,TCP_PORT,SERVER_ADR);
}
void CHgsmsendDlg::MakeTime(char *buffer)
{
CTime Time;
Time=Time.GetCurrentTime();
wsprintf(buffer,"%02d%02d%02d%02d%02d",Time.GetMonth(),Time.GetDay(),
Time.GetHour(),Time.GetMinute(),Time.GetSecond());
}
void CHgsmsendDlg::OnDestroy()
{
CDialog::OnDestroy();
UnBind();
KillTimer(1);
KillTimer(2);
KillTimer(3);
TcpSock.Close();
TcpClient.Close();
UdpSockRead.Close();
UdpSockSend.Close();
}
void CHgsmsendDlg::Bind_Resp(SEQUENCE sequence)
{
long i;
HEADER h;
char buffer[1024];
char reserve[100];
memset(reserve,0,sizeof(reserve));
memset(&h,0,sizeof(HEADER));
h.command_id=SGIP_BIND_RESP;
h.sequence.code=sequence.code;///源结点码。
h.sequence.time=sequence.time;
h.sequence.sequence=sequence.sequence;
memset(sendstring,0,sizeof(sendstring));
i=4L;
ltocpy(sendstring+i,h.command_id);
i+=4L;
ltocpy(sendstring+i,h.sequence.code);
i+=4L;
ltocpy(sendstring+i,h.sequence.time);
i+=4L;
ltocpy(sendstring+i,h.sequence.sequence);
i+=4L;
sendstring[i]=0;
i+=1;
memcpy(sendstring+i,reserve,8);
i+=8;
h.command_length=i;
ltocpy(sendstring,h.command_length);
sprintf(buffer,"SERVERSEND: BIND_RESP TO CLIENT %s ",Client.IP);
xprintf(buffer,"OK");
Rsock.Send(sendstring,h.command_length);
}
void CHgsmsendDlg::Unbind_Resp(SEQUENCE sequence)
{
long i;
HEADER h;
char buffer[1024];
char temptime[11];
memset(buffer,0,sizeof(buffer));
memset(&h,0,sizeof(HEADER));
memset(temptime,0,sizeof(temptime));
h.command_length=20L;
h.command_id=SGIP_UNBIND_RESP;
h.sequence.code=sequence.code;///源结点码。
h.sequence.time=sequence.time;
h.sequence.sequence=sequence.sequence;
memset(sendstring,0,sizeof(sendstring));
ltocpy(sendstring,h.command_length);
i=4L;
ltocpy(sendstring+i,h.command_id);
i+=4L;
ltocpy(sendstring+i,h.sequence.code);
i+=4L;
ltocpy(sendstring+i,h.sequence.time);
i+=4L;
ltocpy(sendstring+i,h.sequence.sequence);
sprintf(buffer,"SEND: UNBIND_RESP TO %s",SERVER_ADR);
xprintf(buffer,"OK");
m_connect=0;
TcpClient.SocketSend(sendstring,h.command_length,TCP_PORT,SERVER_ADR);
}
void CHgsmsendDlg::Deliver_Resp(SEQUENCE sequence)
{
long i;
HEADER h;
char reserve[100];
char buffer[1024];
memset(buffer,0,sizeof(buffer));
memset(reserve,0,sizeof(reserve));
memset(&h,0,sizeof(HEADER));
h.command_id=SGIP_DELIVER_RESP;
h.sequence.code=sequence.code;///源结点码。
h.sequence.time=sequence.time;
h.sequence.sequence=sequence.sequence;
memset(sendstring,0,sizeof(sendstring));
i=4L;
ltocpy(sendstring+i,h.command_id);
i+=4L;
ltocpy(sendstring+i,h.sequence.code);
i+=4L;
ltocpy(sendstring+i,h.sequence.time);
i+=4L;
ltocpy(sendstring+i,h.sequence.sequence);
i+=4L;
sendstring[i]=0;
i+=1;
memcpy(sendstring+i,reserve,8);
i+=8;
h.command_length=i;
ltocpy(sendstring,h.command_length);
sprintf(buffer,"SERVERSEND: DLIVER_RESP TO CLIENT %s ",Client.IP);
xprintf(buffer,"OK");
Rsock.Send(sendstring,h.command_length);
}
void CHgsmsendDlg::Report_Resp(SEQUENCE sequence)
{
long i;
HEADER h;
char reserve[100];
char buffer[1024];
memset(buffer,0,sizeof(buffer));
memset(reserve,0,sizeof(reserve));
memset(&h,0,sizeof(HEADER));
h.command_id=SGIP_REPORT_RESP;
h.sequence.code=sequence.code;///源结点码。
h.sequence.time=sequence.time;
h.sequence.sequence=sequence.sequence;
memset(sendstring,0,sizeof(sendstring));
i=4L;
ltocpy(sendstring+i,h.command_id);
i+=4L;
ltocpy(sendstring+i,h.sequence.code);
i+=4L;
ltocpy(sendstring+i,h.sequence.time);
i+=4L;
ltocpy(sendstring+i,h.sequence.sequence);
i+=4L;
sendstring[i]=0;
i+=1;
memcpy(sendstring+i,reserve,8);
i+=8;
h.command_length=i;
ltocpy(sendstring,h.command_length);
sprintf(buffer,"SERVERSEND: REPORT_RESP TO CLIENT %s ",Client.IP);
xprintf(buffer,"OK");
Rsock.Send(sendstring,h.command_length);
}
void CHgsmsendDlg::UserRpt_Resp(SEQUENCE sequence)
{
long i;
HEADER h;
char reserve[100];
char buffer[1024];
memset(buffer,0,sizeof(buffer));
memset(reserve,0,sizeof(reserve));
memset(&h,0,sizeof(HEADER));
h.command_id=SGIP_USERRPT_RESP;
h.sequence.code=sequence.code;///源结点码。
h.sequence.time=sequence.time;
h.sequence.sequence=sequence.sequence;
memset(sendstring,0,sizeof(sendstring));
i=4L;
ltocpy(sendstring+i,h.command_id);
i+=4L;
ltocpy(sendstring+i,h.sequence.code);
i+=4L;
ltocpy(sendstring+i,h.sequence.time);
i+=4L;
ltocpy(sendstring+i,h.sequence.sequence);
i+=4L;
sendstring[i]=0;
i+=1;
memcpy(sendstring+i,reserve,8);
i+=8;
h.command_length=i;
ltocpy(sendstring,h.command_length);
sprintf(buffer,"SERVERSEND: USERRPT_RESP TO CLIENT %s ",Client.IP);
xprintf(buffer,"OK");
Rsock.Send(sendstring,h.command_length);
}
int CHgsmsendDlg::GetStatus(char Result, char * Status)
{
memset(Status,0,sizeof(Status));
if(Result==0) {
strcpy(Status,"OK");
return 1;
}else if(Result==1) {
strcpy(Status,"非法登录");
return 0;
}else if(Result==2) {
strcpy(Status,"重复登录");
return 0;
}else if(Result==3) {
strcpy(Status,"连接过多");
return 0;
}else if(Result==4) {
strcpy(Status,"登录类型错");
return 0;
}else if(Result==5) {
strcpy(Status,"参数格式错");
return 0;
}else if(Result==6) {
strcpy(Status,"非法手机号码");
return 0;
}else if(Result==7) {
strcpy(Status,"消息ID错");
return 0;
}else if(Result==8) {
strcpy(Status,"信息长度错");
return 0;
}else if(Result==9) {
strcpy(Status,"非法序列号");
return 0;
}else if(Result==10) {
strcpy(Status,"非法操作GNS");
return 0;
}else if(Result==21) {
strcpy(Status,"目的地址不可达");
return 0;
}else if(Result==22) {
strcpy(Status,"路由错");
return 0;
}else if(Result==23) {
strcpy(Status,"路由不存在");
return 0;
}else if(Result==24) {
strcpy(Status,"计费号码无效");
return 0;
}else if(Result==25) {
strcpy(Status,"用户不能通信");
return 0;
}else if(Result==26) {
strcpy(Status,"手机内存不足");
return 0;
}else if(Result==27) {
strcpy(Status,"手机不支持短消息");
return 0;
}else if(Result==28) {
strcpy(Status,"手机接收短消息出现错误");
return 0;
}else if(Result==29) {
strcpy(Status,"不知道的用户");
return 0;
}else if(Result==30) {
strcpy(Status,"不提供此功能");
return 0;
}else if(Result==31) {
strcpy(Status,"非法设备");
return 0;
}else if(Result==32) {
strcpy(Status,"系统失败");
return 0;
}else
return 0;
}
void CHgsmsendDlg::OnTest()
{
int plong=0,mlong=0,i;
BYTE FeeType=2;
char PNum[50],Messa[512],temp[100],FeeValue[100];
memset(FeeValue,0,sizeof(FeeValue));
memset(temp,0,sizeof(temp));
memset(PNum,0,sizeof(PNum));
memset(Messa,0,sizeof(Messa));
if(Tdlg.DoModal()==IDOK) {
Phone.Empty();
Message.Empty();
Phone=Tdlg.m_phone;
Message=Tdlg.m_message;
plong=Phone.GetLength();
mlong=Message.GetLength();
if(plong<11) {
::AfxMessageBox("手机号码错误请重新输入");
return;
}
if(mlong<=0) {
::AfxMessageBox(" 请输入信息");
return;
}
for(i=0;i<plong;i++) {
temp[i]=Phone[i];
}
for(i=0;i<mlong;i++) {
Messa[i]=Message[i];
}
sprintf(PNum,"%s",temp);
if ((temp[0]=='8')&&(temp[1]=='6')) {
ToInfoServer(PNum,Messa);
return;
}
Submit_Sm_Test(PNum,Messa,Tdlg.m_coding,0,Tdlg.m_FeeType,Tdlg.m_FeeValue);
}
}
void CHgsmsendDlg::OnStatus()
{
Ldlg.DoModal();
}
void CHgsmsendDlg::TcpReset()
{
xprintf("TCP 端口复位","复位");
TcpClient.Close();
BOOL bFlag=TcpClient.Create(0,SOCK_STREAM,FD_CONNECT);
if (!bFlag) {
AfxMessageBox("Socket Failed!");
TcpClient.Close();
::PostQuitMessage(0);
return;
}
if (!TcpClient.Connect(SERVER_ADR,TCP_PORT)) {
int nErrno=TcpClient.GetLastError();
if (nErrno!=WSAEWOULDBLOCK) {
AfxMessageBox("Socket Failed!");
TcpClient.Close();
::PostQuitMessage(0);
return;
}
}
}
void CHgsmsendDlg::InitSockClient()
{
sequence_number=0L;
if (TcpClient.m_hSocket==INVALID_SOCKET) {
BOOL bFlag=TcpClient.Create(0,SOCK_STREAM,FD_CONNECT);
if (!bFlag) {
AfxMessageBox("Socket Failed!");
TcpClient.Close();
::PostQuitMessage(0);
return;
}
}
if (!TcpClient.Connect(SERVER_ADR,TCP_PORT)) {
int nErrno=TcpClient.GetLastError();
if (nErrno!=WSAEWOULDBLOCK) {
AfxMessageBox("Socket Failed!");
TcpClient.Close();
::PostQuitMessage(0);
return;
}
}
}
void CHgsmsendDlg::Submit_Sm_Ring(char *ID, int length, char *sm, BYTE saveflag, int data_coding, int esm_class,char * FeeValue,BYTE FeeType,char * ChargeID)
{
SUBMIT s;
char short_msg[8192],buffer[1024];
char temptime[100];
int Fee=0;
memset(temptime,0,sizeof(temptime));
memset(&s,0,sizeof(SUBMIT));
memset(buffer,0,sizeof(buffer));
s.h.command_id=SGIP_SUBMIT;
s.h.sequence.code=SOURCODE;///源结点码。
MakeTime(temptime);
s.h.sequence.time=atol(temptime);
s.h.sequence.sequence=sequence_number++;
sequence_number%=0x10000000;
memset(short_msg,0,sizeof(short_msg));
if(strnicmp(ChargeID,"000",3)==0||strlen(ChargeID)==0) {
sprintf(s.ChargeNumber,"86%s",ID);
}else {
sprintf(s.ChargeNumber,"86%s",ChargeID);
}
sprintf(s.UserNumber[0],"86%s",ID);
s.UserCount=1;
s.MessageCoding=data_coding;//unicode
s.FeeType=FeeType;
memcpy(s.CorpId,CORPID,5);
strcpy(s.SPNumber,SPNUMBER);
//memcpy(s.ServiceType,业务代码,strlen(业务代码));
if ((FeeType==0)&&(Fee==20)) strcpy(s.ServiceType,"TH");
Fee=atoi(FeeValue);
if(Fee>=100000||Fee<0) {
return;
xprintf("Fee Error!!!","Error");
}
sprintf(s.FeeValue,"%d",Fee);
//sprintf(s.GivenValue,"%d",取值范围0-99999,赠送用户的话费,单位为分,由SP定义);
s.AgentFlag=1;
s.MorelatetoMTFlag=2;
// s.Priority=0;优先级0-9从低到高,默认为0
//sprintf((s.ExpireTime,"%02d%02d%02d%02d%02d%02d032+",短消息寿命的终止时间,如果为空,表示使用短消息中心的缺省值。时间内容为16个字符,格式为"yymmddhhmmsstnnp" ,其中“tnnp”取固定值“032+”,即默认系统为北京时间);
//sprintf(s.ScheduleTime,"02d%02d%02d%02d%02d%02d032+",短消息定时发送的时间,如果为空,表示立刻发送该短消息。时间内容为16个字符,格式为“yymmddhhmmsstnnp” ,其中“tnnp”取固定值“032+”,即默认系统为北京时间);
s.ReportFlag=2;
//s.TP_pid=GSM协议类型。详细解释请参考GSM03.40中的9.2.3.9;
s.TP_udhi=esm_class; //GSM协议类型。详细解释请参考GSM03.40中的9.2.3.9;
//s.MessageType=0;信息类型:0-短消息信息
//memcpy(s.Reserve,保留,扩展用);
if(s.MessageCoding==8||s.MessageCoding==24)//unicode
{
length=AnsiToUnicode(sm,short_msg,1);
s.sm_length=length*2;
memcpy(s.short_message,short_msg,2*length);
}
else//plain
{
s.sm_length=length;
memcpy(s.short_message,sm,length);
}
// s.sm_length=length;
// memcpy(s.short_message,sm,length);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -