📄 server.c
字号:
if(sqlca.sqlcode==0)
printf("OK!!connect to database SUCCESS!!!!!!\n");
else
printf("%.*s\n",sqlca.sqlerrm.sqlerrml,sqlca.sqlerrm.sqlerrmc);
if((currency&(0x80000000))!=0)
resp_type=27;
else
{
switch(opertype)
{
case 1:
/* EXEC SQL EXECUTE
BEGIN
tem_plusvalue(:contract_id,:sequence,:currency,:account_balance,:resp_type);
END;
END-EXEC; */
{
struct sqlexd sqlstm;
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 5;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = "begin tem_plusvalue ( :contract_id , :sequence , :curren\
cy , :account_balance , :resp_type ) ; END ;";
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )94;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqhstv[0] = ( void *)contract_id;
sqlstm.sqhstl[0] = (unsigned int )21;
sqlstm.sqhsts[0] = ( int )0;
sqlstm.sqindv[0] = ( void *)0;
sqlstm.sqinds[0] = ( int )0;
sqlstm.sqharm[0] = (unsigned int )0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqhstv[1] = ( void *)&sequence;
sqlstm.sqhstl[1] = (unsigned int )sizeof(int);
sqlstm.sqhsts[1] = ( int )0;
sqlstm.sqindv[1] = ( void *)0;
sqlstm.sqinds[1] = ( int )0;
sqlstm.sqharm[1] = (unsigned int )0;
sqlstm.sqadto[1] = (unsigned short )0;
sqlstm.sqtdso[1] = (unsigned short )0;
sqlstm.sqhstv[2] = ( void *)¤cy;
sqlstm.sqhstl[2] = (unsigned int )sizeof(int);
sqlstm.sqhsts[2] = ( int )0;
sqlstm.sqindv[2] = ( void *)0;
sqlstm.sqinds[2] = ( int )0;
sqlstm.sqharm[2] = (unsigned int )0;
sqlstm.sqadto[2] = (unsigned short )0;
sqlstm.sqtdso[2] = (unsigned short )0;
sqlstm.sqhstv[3] = ( void *)&account_balance;
sqlstm.sqhstl[3] = (unsigned int )sizeof(int);
sqlstm.sqhsts[3] = ( int )0;
sqlstm.sqindv[3] = ( void *)0;
sqlstm.sqinds[3] = ( int )0;
sqlstm.sqharm[3] = (unsigned int )0;
sqlstm.sqadto[3] = (unsigned short )0;
sqlstm.sqtdso[3] = (unsigned short )0;
sqlstm.sqhstv[4] = ( void *)&resp_type;
sqlstm.sqhstl[4] = (unsigned int )sizeof(int);
sqlstm.sqhsts[4] = ( int )0;
sqlstm.sqindv[4] = ( void *)0;
sqlstm.sqinds[4] = ( int )0;
sqlstm.sqharm[4] = (unsigned int )0;
sqlstm.sqadto[4] = (unsigned short )0;
sqlstm.sqtdso[4] = (unsigned short )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqphss = sqlstm.sqhsts;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqpins = sqlstm.sqinds;
sqlstm.sqparm = sqlstm.sqharm;
sqlstm.sqparc = sqlstm.sqharc;
sqlstm.sqpadto = sqlstm.sqadto;
sqlstm.sqptdso = sqlstm.sqtdso;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
}
printf("%.*s\n",sqlca.sqlerrm.sqlerrml,sqlca.sqlerrm.sqlerrmc);
printf("+++++++++++:%s\n",contract_id);
if(resp_type==1)
account_balance=currency;
break;
case 3:
/* EXEC SQL EXECUTE
BEGIN
tem_minusvalue(:contract_id,:sequence,:currency,:account_balance,:resp_type);
END;
END-EXEC; */
{
struct sqlexd sqlstm;
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 5;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = "begin tem_minusvalue ( :contract_id , :sequence , :curre\
ncy , :account_balance , :resp_type ) ; END ;";
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )129;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqhstv[0] = ( void *)contract_id;
sqlstm.sqhstl[0] = (unsigned int )21;
sqlstm.sqhsts[0] = ( int )0;
sqlstm.sqindv[0] = ( void *)0;
sqlstm.sqinds[0] = ( int )0;
sqlstm.sqharm[0] = (unsigned int )0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqhstv[1] = ( void *)&sequence;
sqlstm.sqhstl[1] = (unsigned int )sizeof(int);
sqlstm.sqhsts[1] = ( int )0;
sqlstm.sqindv[1] = ( void *)0;
sqlstm.sqinds[1] = ( int )0;
sqlstm.sqharm[1] = (unsigned int )0;
sqlstm.sqadto[1] = (unsigned short )0;
sqlstm.sqtdso[1] = (unsigned short )0;
sqlstm.sqhstv[2] = ( void *)¤cy;
sqlstm.sqhstl[2] = (unsigned int )sizeof(int);
sqlstm.sqhsts[2] = ( int )0;
sqlstm.sqindv[2] = ( void *)0;
sqlstm.sqinds[2] = ( int )0;
sqlstm.sqharm[2] = (unsigned int )0;
sqlstm.sqadto[2] = (unsigned short )0;
sqlstm.sqtdso[2] = (unsigned short )0;
sqlstm.sqhstv[3] = ( void *)&account_balance;
sqlstm.sqhstl[3] = (unsigned int )sizeof(int);
sqlstm.sqhsts[3] = ( int )0;
sqlstm.sqindv[3] = ( void *)0;
sqlstm.sqinds[3] = ( int )0;
sqlstm.sqharm[3] = (unsigned int )0;
sqlstm.sqadto[3] = (unsigned short )0;
sqlstm.sqtdso[3] = (unsigned short )0;
sqlstm.sqhstv[4] = ( void *)&resp_type;
sqlstm.sqhstl[4] = (unsigned int )sizeof(int);
sqlstm.sqhsts[4] = ( int )0;
sqlstm.sqindv[4] = ( void *)0;
sqlstm.sqinds[4] = ( int )0;
sqlstm.sqharm[4] = (unsigned int )0;
sqlstm.sqadto[4] = (unsigned short )0;
sqlstm.sqtdso[4] = (unsigned short )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqphss = sqlstm.sqhsts;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqpins = sqlstm.sqinds;
sqlstm.sqparm = sqlstm.sqharm;
sqlstm.sqparc = sqlstm.sqharc;
sqlstm.sqpadto = sqlstm.sqadto;
sqlstm.sqptdso = sqlstm.sqtdso;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
}
printf("%.*s\n",sqlca.sqlerrm.sqlerrml,sqlca.sqlerrm.sqlerrmc);
if(resp_type==1)
account_balance=currency;
break;
case 5:
/* EXEC SQL EXECUTE
BEGIN
tem_inquiry(:contract_id,:account_balance,:resp_type);
END;
END-EXEC; */
{
struct sqlexd sqlstm;
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 5;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = "begin tem_inquiry ( :contract_id , :account_balance , :r\
esp_type ) ; END ;";
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )164;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqhstv[0] = ( void *)contract_id;
sqlstm.sqhstl[0] = (unsigned int )21;
sqlstm.sqhsts[0] = ( int )0;
sqlstm.sqindv[0] = ( void *)0;
sqlstm.sqinds[0] = ( int )0;
sqlstm.sqharm[0] = (unsigned int )0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqhstv[1] = ( void *)&account_balance;
sqlstm.sqhstl[1] = (unsigned int )sizeof(int);
sqlstm.sqhsts[1] = ( int )0;
sqlstm.sqindv[1] = ( void *)0;
sqlstm.sqinds[1] = ( int )0;
sqlstm.sqharm[1] = (unsigned int )0;
sqlstm.sqadto[1] = (unsigned short )0;
sqlstm.sqtdso[1] = (unsigned short )0;
sqlstm.sqhstv[2] = ( void *)&resp_type;
sqlstm.sqhstl[2] = (unsigned int )sizeof(int);
sqlstm.sqhsts[2] = ( int )0;
sqlstm.sqindv[2] = ( void *)0;
sqlstm.sqinds[2] = ( int )0;
sqlstm.sqharm[2] = (unsigned int )0;
sqlstm.sqadto[2] = (unsigned short )0;
sqlstm.sqtdso[2] = (unsigned short )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqphss = sqlstm.sqhsts;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqpins = sqlstm.sqinds;
sqlstm.sqparm = sqlstm.sqharm;
sqlstm.sqparc = sqlstm.sqharc;
sqlstm.sqpadto = sqlstm.sqadto;
sqlstm.sqptdso = sqlstm.sqtdso;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
}
printf("%.*s\n",sqlca.sqlerrm.sqlerrml,sqlca.sqlerrm.sqlerrmc);
if(resp_type==1)
account_balance=0xffffffff;
break;
default:
printf("WRONG OPERA_TYPE %d\n",opertype);
break;
}
*accountbalance=account_balance;
printf("+++++++++++:%d\n",account_balance);
}
return resp_type;
}
FILE * openfile()
{
FILE * fid;
char * filename=ConfigFile;
fid=fopen(filename,"r");
if(fid==NULL)
{
printf("error opening file\n");
exit(1);
}
return fid;
}
int readfile(FILE *fid)
{
unsigned int port;
unsigned char IP[15];
int i=0;
fscanf(fid,"ServerPORT=%d\n",&port);
while(!feof(fid))
{
//strcpy(IP,"EOF");
fscanf(fid,"ClientIP=%s\n",IP);
//if(IP[0]=='E')
// break;
if(inet_aton(IP,&ClientIP[i++])==0)
{
perror("IP address error\n");
exit(1);
}
}
fclose(fid);
return port;
}
int writelog(char * filename,Message_Head1 * phead,Message_Body1 * pbody,Message_Tail * ptail)
{
FILE * fid;
int file_desc;
int save_errno;
for(;;)
{
file_desc=open(lock_file,O_RDWR|O_CREAT|O_EXCL,0444);
if(file_desc==-1)
{
printf("%d---wait to save data\n",getpid());
sleep(1);
}
else
{
break;
}
}
fid=fopen(filename,"a+");
if(fid==NULL)
{
printf("error opening file\n");
return(-1);
}
else
{
fwrite(phead,sizeof(*phead),1,fid);
fwrite(pbody,sizeof(*pbody),1,fid);
fwrite(ptail,sizeof(*ptail),1,fid);
fflush(fid);
printf("%d---write log file\n",getpid());
close(fid);
//sleep(1);
}
(void)close(file_desc);
(void)unlink(lock_file);
return(0);
}
int readlog()
{
FILE * fid;
Message_Head1 head;
Message_Body1 body;
Message_Tail tail;
(void)unlink(lock_file);
fid=fopen(RecordFile,"r");
if(fid==NULL)
{
printf("No Record File\n");
return(0);
}
else
{
while(!feof(fid))
{
printf("%d---read log file\n",getpid());
if(fread(&head,sizeof(head),1,fid)!=1)
break;
if(fread(&body,sizeof(body),1,fid)!=1)
break;
if(fread(&tail,sizeof(tail),1,fid)!=1)
break;
head1_info_print(&head);
body1_info_print(&body);
tail_info_print(&tail);
if(affirm(0,body.trader_serial)==26)
writelog(TempFile,&head,&body,&tail);
}
fclose(fid);
(void)unlink(RecordFile);
rename(TempFile,RecordFile);
}
return 1;
}
struct sockaddr_in gethoststuff()
{
FILE *fid;
int port;
struct sockaddr_in sa;
struct hostent * ph;
char myname[MAXHOSTNAMELEN+1];
fid=openfile();
port=readfile(fid);
gethostname(myname,MAXHOSTNAMELEN);
printf("host name is %s\n",myname);
printf("port is %d\n",port);
//if((ph=gethostbyname(myname))==NULL)
//{
// printf("gethostbyname failed\n");
// exit(1);
// }
memset(&sa,0,sizeof(struct sockaddr_in));
sa.sin_family=AF_INET;
sa.sin_addr.s_addr=htonl(INADDR_ANY);
sa.sin_port=htons(port);
return sa;
}
int opensocket()
{
int s;
s=socket(AF_INET,SOCK_STREAM,0);
if(s<0)
{
perror("socket error");
exit(1);
}
return s;
}
void bindnlisten(int s, struct sockaddr_in sa)
{
if(bind(s,(struct sockaddr *)&sa,sizeof(sa))<0)
{
perror("bind error");
exit(1);
}
listen(s,5);
}
int acceptconn(int s,struct sockaddr_in * p_client_sa)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -