pkserv.c
上传用户:sdtbys
上传日期:2009-12-06
资源大小:13k
文件大小:3k
源码类别:

并口编程

开发平台:

C/C++

  1. #include <stdio.h>
  2. #include "pk.h"
  3. B_STRU1 b_data1,*b_datap1;
  4. B_STRU2 b_data2,*b_datap2;
  5. F_STRU1 f_data1,*f_datap1;
  6. F_STRU2 f_data2,*f_datap2;
  7. main()
  8. {
  9. int fsockid,bsockid;
  10. int ret,len;
  11. char midbuf[500];
  12. b_datap1=&b_data1;
  13. b_datap2=&b_data2;
  14. f_datap1=&f_data1;
  15. f_datap2=&f_data2;
  16. daemon_procedure(1);
  17. fsockid=server_socket("",9898);
  18. while(1)
  19. {
  20. ret=accept_procdure(&fsockid);
  21.         memset(midbuf,0,sizeof(midbuf));
  22. if (ret==0)
  23. {
  24. #ifdef DEBUG
  25. WriteLog("接受请求开始");
  26. #endif
  27. if((len=read_socket(fsockid,midbuf,FLEN1))!=FLEN1)
  28. {
  29. memset(f_datap2,0,FLEN2);
  30. strcpy(f_datap2->retcode,"9001");
  31. memset(midbuf,0,sizeof(midbuf));
  32. tscanf(midbuf,F_FMT2,F_VAR2);
  33. write_socket(fsockid,midbuf,FLEN2);
  34. break;
  35. }
  36. #ifdef DEBUG
  37. WriteLog("%s",midbuf);
  38. #endif
  39. if ((ret=tscanf(midbuf,F_FMT1,F_VAR1))!=0)
  40. {
  41. WriteLog("%d",ret);
  42. memset(f_datap2,0,FLEN2);
  43. strcpy(f_datap2->retcode,"9002");
  44. memset(midbuf,0,sizeof(midbuf));
  45. tscanf(midbuf,F_FMT2,F_VAR2);
  46. write_socket(fsockid,midbuf,FLEN2);
  47. break;
  48. }
  49. #ifdef DEBUG
  50.                 WriteLog("apcode=[%4s] acno=[%15s] pktyp=[%1s]",f_datap1->apcode,f_datap1->acno,f_datap1->pktyp);
  51. WriteLog("fore1=[%16s] fore2=[%16s] mach=[%8s] chip=[%6s]",f_datap1->fore1,f_datap1->fore2,f_datap1->mach,f_datap1->chip);
  52. WriteLog("bk=[%48s] mmcode=[%12s]",f_datap1->bk,f_datap1->mmcode);
  53. WriteLog("acdate=[%8s] vchdate=[%8s] amount=[%19.2lf] limit=[%19.2lf]",f_datap1->acdate,f_datap1->vchdate,f_datap1->amount,f_datap1->limit);
  54. WriteLog("vchtyp=[%2s] vchstart=[%8ld] vchend=[%8ld]",f_datap1->vchtyp,f_datap1->vchstart,f_datap1->vchend);
  55. WriteLog("tlid=[%4s] name=[%10s] idcard=[%20s]",f_datap1->tlid,f_datap1->name,f_datap1->idcard);
  56. #endif
  57. apcall(fsockid);
  58. break;
  59. }
  60. }
  61. close(fsockid);
  62. exit(0);   
  63. }
  64. int apcall(int fsockid)
  65. {
  66. char midbuf[500];
  67. switch(atoi(f_datap1->apcode))
  68. {
  69. case 9001:
  70. ap9001(fsockid);
  71. break;
  72. case 9004:
  73. ap9004(fsockid);
  74. break;
  75. default: /* 交易码非法*/
  76. reterr(fsockid,"1001");
  77. break;
  78. }
  79. return(0);
  80. }
  81. int reterr(int fsockid,char *errcode)
  82. {
  83. char midbuf[100];
  84. memset(f_datap2,0,FLEN2);
  85. strncpy(f_datap2->retcode,errcode,4);
  86. memset(f_datap2->bk,'0',48);
  87. memset(midbuf,0,sizeof(midbuf));
  88. tprintf(midbuf,F_FMT2,F_VAR2);
  89. WriteLog("返回前台:%s",midbuf);
  90. write_socket(fsockid,midbuf,strlen(midbuf));
  91. return(0);
  92. }
  93. int initbdata1()
  94. {
  95. memset((char *)b_datap1,0,BLEN1);
  96. memset(b_datap1->vflag,'0',1);
  97. memset(b_datap1->payacc,'0',19);
  98. memset(b_datap1->accept,'0',16);
  99. memset(b_datap1->clieno,'0',16);
  100. memset(b_datap1->machno,'0',8);
  101. memset(b_datap1->chipno,'0',6);
  102. memset(b_datap1->passwd,'0',16);
  103. memset(b_datap1->proofind,'0',2);
  104. memset(b_datap1->chequeno,'0',8);
  105. memset(b_datap1->incomacc,'0',19);
  106. memset(b_datap1->monies,'0',13);
  107. memset(b_datap1->limonies,'0',13);
  108. memset(b_datap1->signdate,'0',8);
  109. memset(b_datap1->bk,'0',48);
  110. memset(b_datap1->bk2,'0',48);
  111. memset(b_datap1->usrpasswd,'0',6);
  112. memset(b_datap1->payno,'0',12);
  113. memset(b_datap1->openo,'0',6);
  114. }