www.pudn.com > PK1111.rar > pkserv.c


#include  
#include "pk.h" 
 
B_STRU1 b_data1,*b_datap1; 
B_STRU2 b_data2,*b_datap2; 
F_STRU1 f_data1,*f_datap1; 
F_STRU2 f_data2,*f_datap2; 
 
main() 
{ 
	int fsockid,bsockid; 
	int ret,len; 
	char midbuf[500]; 
	b_datap1=&b_data1; 
	b_datap2=&b_data2; 
	f_datap1=&f_data1; 
	f_datap2=&f_data2; 
 
	daemon_procedure(1); 
	fsockid=server_socket("",9898); 
while(1) 
	{ 
	ret=accept_procdure(&fsockid); 
        memset(midbuf,0,sizeof(midbuf)); 
	if (ret==0) 
	{ 
#ifdef DEBUG 
	WriteLog("接受请求开始"); 
#endif 
		if((len=read_socket(fsockid,midbuf,FLEN1))!=FLEN1) 
			{ 
			memset(f_datap2,0,FLEN2); 
			strcpy(f_datap2->retcode,"9001"); 
			memset(midbuf,0,sizeof(midbuf)); 
			tscanf(midbuf,F_FMT2,F_VAR2); 
			write_socket(fsockid,midbuf,FLEN2); 
			break; 
			} 
#ifdef DEBUG 
	WriteLog("%s",midbuf); 
#endif 
		if ((ret=tscanf(midbuf,F_FMT1,F_VAR1))!=0) 
			{ 
			WriteLog("%d",ret); 
			memset(f_datap2,0,FLEN2); 
			strcpy(f_datap2->retcode,"9002"); 
			memset(midbuf,0,sizeof(midbuf)); 
			tscanf(midbuf,F_FMT2,F_VAR2); 
			write_socket(fsockid,midbuf,FLEN2); 
			break; 
			} 
#ifdef DEBUG 
                WriteLog("apcode=[%4s] acno=[%15s] pktyp=[%1s]",f_datap1->apcode,f_datap1->acno,f_datap1->pktyp); 
		WriteLog("fore1=[%16s] fore2=[%16s] mach=[%8s] chip=[%6s]",f_datap1->fore1,f_datap1->fore2,f_datap1->mach,f_datap1->chip); 
		WriteLog("bk=[%48s] mmcode=[%12s]",f_datap1->bk,f_datap1->mmcode); 
		WriteLog("acdate=[%8s] vchdate=[%8s] amount=[%19.2lf] limit=[%19.2lf]",f_datap1->acdate,f_datap1->vchdate,f_datap1->amount,f_datap1->limit); 
		WriteLog("vchtyp=[%2s] vchstart=[%8ld] vchend=[%8ld]",f_datap1->vchtyp,f_datap1->vchstart,f_datap1->vchend); 
		WriteLog("tlid=[%4s] name=[%10s] idcard=[%20s]",f_datap1->tlid,f_datap1->name,f_datap1->idcard); 
#endif 
 
		 
		apcall(fsockid);	 
 
	break; 
	} 
	} 
	close(fsockid); 
	exit(0);    
} 
 
 
 
 
int apcall(int fsockid) 
{ 
 
char midbuf[500]; 
 
	switch(atoi(f_datap1->apcode)) 
	{ 
	case 9001: 
		ap9001(fsockid); 
		break; 
	case 9004: 
		ap9004(fsockid); 
		break; 
 
	default:	/* 交易码非法*/ 
		reterr(fsockid,"1001"); 
		break; 
	} 
 
return(0); 
 
} 
 
int reterr(int fsockid,char *errcode) 
{ 
char midbuf[100]; 
		memset(f_datap2,0,FLEN2); 
		strncpy(f_datap2->retcode,errcode,4); 
		memset(f_datap2->bk,'0',48); 
		memset(midbuf,0,sizeof(midbuf)); 
		tprintf(midbuf,F_FMT2,F_VAR2); 
		WriteLog("返回前台:%s",midbuf); 
		write_socket(fsockid,midbuf,strlen(midbuf)); 
return(0); 
} 
 
int initbdata1() 
{ 
memset((char *)b_datap1,0,BLEN1); 
memset(b_datap1->vflag,'0',1); 
memset(b_datap1->payacc,'0',19); 
memset(b_datap1->accept,'0',16); 
memset(b_datap1->clieno,'0',16); 
memset(b_datap1->machno,'0',8); 
memset(b_datap1->chipno,'0',6); 
memset(b_datap1->passwd,'0',16); 
memset(b_datap1->proofind,'0',2); 
memset(b_datap1->chequeno,'0',8); 
memset(b_datap1->incomacc,'0',19); 
memset(b_datap1->monies,'0',13); 
memset(b_datap1->limonies,'0',13); 
memset(b_datap1->signdate,'0',8); 
memset(b_datap1->bk,'0',48); 
memset(b_datap1->bk2,'0',48); 
memset(b_datap1->usrpasswd,'0',6); 
memset(b_datap1->payno,'0',12); 
memset(b_datap1->openo,'0',6); 
}