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


#include  
#include  
 
 
#define Ret(M) memset(pk_out,' ',pk_out_len);strcpy(pk_out,M); 
#define pk_in_len   386 
#define pk_out_len  8 
 
 
int zhcx_tcpcli(char *pk_in,char *pk_out) 
{  
  int sock;  
  int ret;  
  int time;  
  char pkIP[30]; 
  char pkPORT[10]; 
  int count; 
  int len; 
  int i; 
  char out[79];	 
  FILE *fp; 
  char filename[20]; 
   
  memset(pkIP,0,sizeof(pkIP)); 
  memset(pkPORT,0,sizeof(pkPORT)); 
   
  memset(filename,0,20); 
 
  ShowId("cxtcpcli:zhcx"); 
  GetEnv("/usr/zfmm/zfmm.cfg","[银河]IP",pkIP); 
  GetEnv("/usr/zfmm/zfmm.cfg","[银河]PORT",pkPORT); 
  /*取配置地址、端口*/ 
#ifdef DEBUG 
 ShowMsg("pktcpcli open IP=%s PORT=%s\n",pkIP,pkPORT); 
#endif 
 
  sock=sockClientOpen(pkIP,atoi(pkPORT)); /*连接*/ 
  if (sock <0) 
  { 
#ifdef DEBUG 
    ShowMsg("不能正确连接支付密码前置机! error=%d\n",sock); 
#endif 
    Ret("00004011"); 
    return (0); 
  } 
   
#ifdef DEBUG 
 LooKChar(pk_in,strlen(pk_in)); 
#endif 
 
  ret=sockSend(sock,pk_in,strlen(pk_in)); 
  if (ret <0) 
  { 
#ifdef DEBUG 
    ShowMsg("不能正确发送支付密码通讯包! error=%d\n",ret); 
#endif 
    Ret("00004012"); 
    sockClose(sock); 
    return (0); 
  } 
 
 if (TimeOut(sock,70))  
 { 
#ifdef DEBUG 
   ShowMsg("接收支付密码前置机输出数据操时!\n"); 
#endif 
   Ret("00004014"); 
   sockClose(sock); 
   return(0); 
 } 
    
 timeoutopen(70); 
 ret=sockRecv(sock,pk_out,pk_out_len); 
 time=timeoutclose(); 
 if (time==0) 
 { 
#ifdef DEBUG 
   ShowMsg("接收支付密码前置机输出超时!\n"); 
#endif 
   Ret("00004015"); 
   sockClose(sock); 
   return (0); 
 } 
 if (ret <0) 
 { 
#ifdef DEBUG 
   ShowMsg("不能正确接收支付密码前置机输出! error=%d\n",ret); 
#endif 
   Ret("00004016"); 
   sockClose(sock); 
   return (0); 
 } 
  
#ifdef DEBUG 
 LooKChar(pk_out,pk_out_len); 
#endif 
 
/****************************/ 
 
 count=(pk_out[0]-'0')*1000+(pk_out[1]-'0')*100+(pk_out[2]-'0')*10+(pk_out[3]-'0'); 
 /*fprintf(stderr,"count=%d\n",count);*/ 
 
 if (count==0) 
    return (0); 
 
 len=79; 
 
 strcat(filename,"/tmp/zhcx"); 
 strcat(filename,&pk_in[382]); 
 fp=fopen(filename,"w"); 
 if (fp==NULL) return; 
 
 for(i=0;i