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

📄 cxtcpcli.c

📁 一个C语言的SOCKET程序
💻 C
字号:
#include <stdio.h>
#include <stdlib.h>


#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<count;i++)
 {
   
 	timeoutopen(70);
 	ret=sockRecv(sock,out,len);
 	time=timeoutclose();
 	if (time==0)
 	{
		#ifdef DEBUG
   		ShowMsg("接收支付密码前置机输出超时!\n");
		#endif
		goto end;
 	}
 	if (ret <0)
 	{
		#ifdef DEBUG
   		ShowMsg("不能正确接收支付密码前置机输出! error=%d\n",ret);
		#endif
		goto end;
 	}

	#ifdef DEBUG
 	LooKChar(out,len);
	#endif

	fwrite(out,8,1,fp);
	fputc('|',fp);
	fwrite(&out[8],2,1,fp);
	fputc('|',fp);
	fwrite(&out[10],32,1,fp);
	fputc('|',fp);
	fwrite(&out[42],10,1,fp);
	fputc('|',fp);
	fwrite(&out[52],1,1,fp);
	fputc('|',fp);
	fwrite(&out[53],1,1,fp);
	fputc('|',fp);
	fwrite(&out[54],8,1,fp);
	fputc('|',fp);
	fwrite(&out[62],8,1,fp);
	fputc('|',fp);
	fwrite(&out[70],8,1,fp);
	fputc('|',fp);
	fwrite(&out[78],1,1,fp);
	fputc('\n',fp);

 }//for

end:

 fclose(fp);
/***************************/
 sockClose(sock);
 return (0);
   
}


int sbcx_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[52];	
  FILE *fp;
  char filename[20];
  
  memset(pkIP,0,sizeof(pkIP));
  memset(pkPORT,0,sizeof(pkPORT));
  
  memset(filename,0,20);
  ShowId("cxtcpcli:sbcx");
  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=52;

 strcat(filename,"/tmp/sbcx");
 strcat(filename,&pk_in[382]);
 fp=fopen(filename,"w");
 if (fp==NULL) return;

 for(i=0;i<count;i++)
 {
   
 	timeoutopen(70);
 	ret=sockRecv(sock,out,len);
 	time=timeoutclose();
 	if (time==0)
 	{
		#ifdef DEBUG
   		ShowMsg("接收支付密码前置机输出超时!\n");
		#endif
		goto end;
 	}
 	if (ret <0)
 	{
		#ifdef DEBUG
   		ShowMsg("不能正确接收支付密码前置机输出! error=%d\n",ret);
		#endif
		goto end;
 	}

	#ifdef DEBUG
 	LooKChar(out,len);
	#endif

	fwrite(out,8,1,fp);
	fputc('|',fp);
	fwrite(&out[8],10,1,fp);
	fputc('|',fp);
	fwrite(&out[18],8,1,fp);
	fputc('|',fp);
	fwrite(&out[26],1,1,fp);
	fputc('|',fp);
	fwrite(&out[27],1,1,fp);
	fputc('|',fp);
	fwrite(&out[28],8,1,fp);
	fputc('|',fp);
	fwrite(&out[36],8,1,fp);
	fputc('|',fp);
	fwrite(&out[44],8,1,fp);
	fputc('\n',fp);

 }//for

end:

 fclose(fp);
/***************************/
 sockClose(sock);
 return (0);
   
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -