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

📄 ttt.c

📁 移动
💻 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(&timestamp);
        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 + -