📄 ttt.c
字号:
#include <stdio.h>
#include <time.h>
#include "dpl_types.h"
#include "dpl_errno.h"
#include "dpl_socket.h"
#include "cmppe_proto.h"
#include "api.h"
#include "ttt_glob.h"
#define sleep Sleep
char msg[160];
dpl_uint8_t msg_mode;
dpl_uint8_t dcs;
char src_usr[20];
char dst_usr[20];
char svc_type[10];
dpl_uint8_t fee_type;
dpl_uint32_t info_fee;
dpl_uint8_t fee_utype;
char fee_usr[20];
void ReadConfig(char *file, char* title, char* token, char* value)
{
char buffer[1024];
char *readpoint,*ptr;
char tempstr[256];
FILE *fp;
int i;
int length;
memset(tempstr,0,256);
memset(buffer, 0,1024);
if((fp=fopen(file,"r"))==NULL){
printf("无法打开客户的配置文件,程序终止!");
exit(1);
}
fseek(fp,0l,SEEK_SET);
i=fread(buffer,1024,1,fp);
ptr = buffer;
readpoint=(char*)strstr((const char *)ptr,title);
ptr = readpoint + strlen(title);
readpoint=(char*)strstr((const char *)ptr,token);
length=strlen(token);
for(i=0;i<256;i++){
if (*(readpoint+length+i)!='\n'){
tempstr[i]=*(readpoint+length+i);
}else{
tempstr[i]='\0';
break;
}
}
strcpy(value,tempstr);
fclose(fp);
return;
}
void system_init()
{
char buf[32];
int j;
ReadConfig("ttt.conf", "[HOST DESC]", "HOST=",host);
memset(buf,0,sizeof(buf));
ReadConfig("ttt.conf", "[HOST DESC]", "PORT=",buf);
port = atoi(buf);
ReadConfig("ttt.conf", "[ICP DESC]", "ICP_ID=",icp_id);
ReadConfig("ttt.conf", "[ICP DESC]", "ICP_PS=",icp_ps);
memset(src_usr,0,sizeof(src_usr));
ReadConfig("ttt.conf", "[MT DESC]","SRC_USR=",src_usr);
printf("src_usr=%s\n",src_usr);
memset(dst_usr,0,sizeof(dst_usr));
ReadConfig("ttt.conf", "[MT DESC]","DST_USR=",dst_usr);
printf("dst_usr=%s\n",dst_usr);
memset(fee_usr,0,sizeof(fee_usr));
ReadConfig("ttt.conf", "[MT DESC]","FEE_USR=",fee_usr);
printf("fee_usr=%s\n",fee_usr);
memset(msg,0,sizeof(msg));
ReadConfig("ttt.conf", "[MT DESC]","MSG=",msg);
printf("msg=%s\n",msg);
memset(buf,0,sizeof(buf));
ReadConfig("ttt.conf", "[MT DESC]","MSG_MODE=",buf);
msg_mode = atoi(buf);
printf("msg_mode=%d\n",msg_mode);
memset(buf,0,sizeof(buf));
ReadConfig("ttt.conf", "[MT DESC]","DCS=",buf);
dcs = atoi(buf);
printf("dcs=%d\n",dcs);
memset(svc_type,0,sizeof(svc_type));
ReadConfig("ttt.conf", "[MT DESC]","SVC_TYPE=",svc_type);
printf("svc_type=%s\n",svc_type);
memset(buf,0,sizeof(buf));
ReadConfig("ttt.conf", "[MT DESC]","FEE_TYPE=",buf);
fee_type = atoi(buf);
printf("fee_type=%d\n",fee_type);
memset(buf,0,sizeof(buf));
ReadConfig("ttt.conf", "[MT DESC]","INFO_FEE=",buf);
info_fee = atoi(buf);
printf("info_fee=%d\n",info_fee);
memset(buf,0,sizeof(buf));
ReadConfig("ttt.conf", "[MT DESC]","FEE_UTYPE=",buf);
fee_utype = atoi(buf);
printf("fee_utype=%d\n",fee_utype);
return;
}
dpl_status_t login_value_set(cmppe_login *cl)
{
time_t timestamp;
time(×tamp);
strcpy(cl->icp_id,icp_id);
strcpy(cl->icp_auth,icp_ps);
cl->icp_bind_type = 2;
cl->if_version = 0x12;
printf("timestamp = %d\n",timestamp);
cl->icp_timestamp = timestamp;
return DPL_SUCCESS;
}
dpl_status_t submit_value_set(cmppe_submit *cs)
{
int j;
cmppe_submit_sm_init(cs);
cmppe_submit_sm_set_shortmsg(cs, msg, (dpl_uint8_t)strlen(msg));
cmppe_submit_sm_set_priority(cs, 9);
cmppe_submit_sm_set_msgmode (cs, msg_mode);
cmppe_submit_sm_set_protoid (cs, 1);
cmppe_submit_sm_set_dcs (cs, dcs);
cmppe_submit_sm_set_schedule(cs, "");
cmppe_submit_sm_set_validate(cs, "");
cmppe_submit_sm_set_src_addr(cs, src_usr);
cmppe_submit_sm_add_dst_addr(cs, dst_usr);
cmppe_submit_sm_set_icp_id (cs, icp_id);
cmppe_submit_sm_set_svc_type(cs, "");
cmppe_submit_sm_set_fee_type(cs, fee_type);
cmppe_submit_sm_set_info_fee(cs, info_fee);
cmppe_submit_sm_set_fee_user(cs, fee_utype, fee_usr);
return DPL_SUCCESS;
}
void main()
{
dpl_status_t stat;
conn_desc conn;
cmppe_submit cs;
cmppe_login cl;
cmppe_packet cp;
dpl_uint32_t user_seq;
int status;
int type;
int result;
int seq;
int j;
system_init();
fflush(stdout);
memset(&conn,0,sizeof(conn));
stat = cmpp_connect_to_ismg(host,port,&conn);
if(stat != DPL_SUCCESS){
printf("<ICP-TEST> connect error[stat=%d]\n",stat);
goto finished;
}
memset(&cl,0,sizeof(cmppe_login));
login_value_set(&cl);
stat = cmpp_login(&conn,&cl);
if(stat != DPL_SUCCESS){
printf("<ICP-TEST> send login request error[stat=%d]\n",stat);
goto finished;
}
memset(&cp,0,sizeof(cmppe_packet));
#ifdef UPGRADE
stat = cmpp_recv(&conn,&cp,0,&seq);
#else
stat = cmpp_recv(&conn,&cp,0);
#endif
if(stat != DPL_SUCCESS){
goto finished;
}
type = cp.pk_head.pk_cmd;
status = cp.pk_head.pk_stat;
result = cp.result;
seq = cp.pk_head.pk_seq;
printf("<ICP-TEST>[type=%08x][status=%03x][seq=%08x][result=%02x]\n",\
type,status,seq,result);
for(j=0;j<3;j++){
memset(&cs,0,sizeof(cmppe_submit));
submit_value_set(&cs);
#ifdef UPGRADE
stat = cmpp_submit(&conn,&cs,&user_seq);
#else
stat = cmpp_submit(&conn,&cs);
#endif
if(stat != DPL_SUCCESS){
printf("XXX : err ! [stat=%d]\n",stat);
goto finished;
}
memset(&cp,0,sizeof(cmppe_packet));
#ifdef UPGRADE
stat = cmpp_recv(&conn,&cp,0,&seq);
#else
stat = cmpp_recv(&conn,&cp,0);
#endif
if(stat != DPL_SUCCESS){
goto finished;
}
type = cp.pk_head.pk_cmd;
status = cp.pk_head.pk_stat;
result = cp.result;
seq = cp.pk_head.pk_seq;
if(type != 0x80000004){
printf("Recv a Unknown packet![COMMAND_ID=%08x]\n", type);
goto finished;
}
printf("<ICP-TEST>[type=%08x][status=%03x][seq=%08x][result=%02x]\n",type,status,seq,result);
if((type == 0x80000004) && (status == 0)){
// printf("\t[msg_id = %s]\n",cp.pk_data.pk_submit_resp.msg_id);
if(cp.pk_data.pk_submit_resp.us_count > 0){
printf("\t[ERROR-LIST]: ");
for(j=0;j<cp.pk_data.pk_submit_resp.us_count;j++){
printf(" [index = %02x]--->[stat = %02x]",\
cp.pk_data.pk_submit_resp.us_user[j].index,\
cp.pk_data.pk_submit_resp.us_user[j].stat);
}
printf("\n");
}
}
sleep(10);
if(cs.msg_mode == 1)
{
printf("Waiting status report!\n");
#ifdef UPGRADE
memset(&cp,0,sizeof(cmppe_packet));
stat = cmpp_recv(&conn,&cp,0,&seq);
type = cp.pk_head.pk_cmd;
status = cp.pk_head.pk_stat;
result = cp.result;
seq = cp.pk_head.pk_seq;
if(type != 0x00000005){
printf("Recv a Unkown packet![COMMAND_ID=%08x]\n", type);
goto finished;
}
printf("<ICP-TEST>[type=%08x][status=%03x][seq=%08x][result=%02x]\n",type,status,seq,result);
cmpp_deliver_resp(&conn,cp.pk_head.pk_seq, stat);
#else
stat = cmpp_recv(&conn,&cp,0);
#endif
if(stat != DPL_SUCCESS){
goto finished;
}
}
}
cmpp_logout(&conn);
finished:
cmpp_disconnect_from_ismg(&conn);
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -