📄 pc_net.c
字号:
#include <stdio.h>#include <fcntl.h>#include <stdlib.h>#include <time.h>#include <sys/types.h>#include <xti.h>#include <sys/socket.h>#include <stdio.h>#include <sys/param.h>#include <sys/cdefs.h>#include <netinet/in.h>#include "bank.h"/*#include <arpa/inet.h>*/#define NETDEVICE "/dev/xti/tcp"#define MAXDATALEN 1256int t_errno;struct t_call *cli_t_sndcall;struct t_bind *retb;int timeoutflag;int timeout = 200;FILE *ffd;extern int host_ip1;extern int host_ip2;extern int host_ip3;extern int host_ip4;extern int host_port;int sndrcv_account( sbuf,rbuf )char *sbuf,*rbuf;{ int fd,i=1,jym=0,len = 0 ; char buf[1000]; WriteLog ( LOGFILE, "comstart sbuf:%s*\n",sbuf ); fflush( stdout ); fd = comstart( host_port ); if( fd < 0 ){ return( -1 ); } if( comsend(fd,sbuf) ){ comend(fd); return( -1 ); } WriteLog ( LOGFILE,"comsend ok\n" ); fflush( stdout ); if( comrecv(fd,rbuf) ){ comend(fd); return( -1 ); } WriteLog ( LOGFILE, "rbuf:%s*\n",rbuf ); comend(fd); /* len = PkgEncode( rbuf,strlen(rbuf),buf); if( len < 0 ) return( -1 ); if( SendPacket( sockfd,(char *)buf,strlen(buf) ) ) return( -1 ); return( 0 ); */ return (0);}setalarm( sec )int sec;{ timeoutflag = 0; alarm( sec );} void catchalarm( i )int i;{ timeoutflag = 1;}int comstart(portaddr)int portaddr;{ struct t_info t_info; int fd; char comstat; int recode,cptype; char tmpstr[80]; int j; struct sockaddr_in servaddr;wrlog(__FILE__,__LINE__,ffd,comstat,"t_open" ); comstat='I'; if ((fd=t_open(NETDEVICE,O_RDWR,&t_info)) < 0 ) { wrlog(__FILE__,__LINE__,ffd,comstat,NULL);sprintf (tmpstr, "retcode=%d, t_errno=%d, fd=%d", recode, t_errno, fd);wrlog(__FILE__,__LINE__,ffd,comstat,tmpstr); return(-1); }wrlog(__FILE__,__LINE__,ffd,comstat,"t_open 1" ); comstat='I'; retb=(struct t_bind *)t_alloc(fd,T_BIND,T_ALL); retb->addr.maxlen=53;wrlog(__FILE__,__LINE__,ffd,comstat,"t_bind" ); if (t_bind(fd,NULL,retb) != 0) { wrlog(__FILE__,__LINE__,ffd,comstat,NULL);sprintf (tmpstr, "retcode=%d, t_errno=%d, fd=%d", recode, t_errno, fd);wrlog(__FILE__,__LINE__,ffd,comstat,tmpstr); t_free(retb,T_BIND); t_close(fd); return(-2); } cptype=portaddr; /* addr no.*/ cli_t_sndcall=(struct t_call *)t_alloc(fd,T_CALL,T_ALL); cli_t_sndcall->opt.len=0; cli_t_sndcall->udata.len=0; cli_t_sndcall->addr.len=8;wrlog(__FILE__,__LINE__,ffd,comstat,"t_getaddr" ); if((recode= getaddr("PCBCBJ",cli_t_sndcall->addr.buf,cptype))!=0) { t_errno=8; wrlog(__FILE__,__LINE__,ffd,comstat,NULL);sprintf (tmpstr, "retcode=%d, t_errno=%d, fd=%d", recode, t_errno, fd);wrlog(__FILE__,__LINE__,ffd,comstat,tmpstr); t_free(retb,T_BIND); t_free(cli_t_sndcall,T_CALL); t_close(fd); return(-3); }bzero(&servaddr,sizeof(servaddr));servaddr.sin_family=AF_INET;servaddr.sin_port=htons(host_port); cli_t_sndcall->addr.maxlen=sizeof(servaddr);cli_t_sndcall->addr.len=sizeof(servaddr);/*cli_t_sndcall->addr.buf=&servaddr;*//*printf( "addr buf:%s*\n", &servaddr.sin_addr );printf( "addr buf:%s*\n", cli_t_sndcall->addr.buf );*/wrlog(__FILE__,__LINE__,ffd,comstat,"t_connect" ); if ((recode=t_connect(fd,cli_t_sndcall,NULL)) != 0) { t_error( "t_connect" ); wrlog(__FILE__,__LINE__,ffd,comstat,NULL);sprintf (tmpstr, "j=%d retcode=%d, t_errno=%d, fd=%d", j, recode, t_errno, fd);wrlog(__FILE__,__LINE__,ffd,comstat,tmpstr); t_free(retb,T_BIND); t_free(cli_t_sndcall,T_CALL); t_close(fd); return(-4); }/* wrlog(__FILE__,__LINE__,ffd,comstat,NULL);sprintf (tmpstr, "retcode=%d, t_errno=%d, fd=%d", recode, t_errno, fd);wrlog(__FILE__,__LINE__,ffd,comstat,tmpstr);*/ return(fd); }int comsend(fd,sbuf)int fd;char *sbuf;{ int slen,rlen,recode,flags; char comstat; if( timeout > 0 ) signal( SIGALRM,catchalarm ); if( timeout > 0 ) setalarm( timeout ); comstat='S'; slen=strlen(sbuf); if ((recode=t_snd(fd,sbuf,slen,NULL)) != slen) { if( timeoutflag ) return( -1 ); wrlog(__FILE__,__LINE__,ffd,comstat,NULL); return(-1); } else { /* wrlog(__FILE__,__LINE__,ffd,comstat,sbuf); */ return(0); }}int comrecv(fd,rbuf)char *rbuf;int fd;{ int slen,rlen,recode,flags,i; char comstat; comstat='R'; if( timeout > 0 ) signal( SIGALRM,catchalarm ); if( timeout > 0 ) setalarm( timeout ); flags=T_MORE; slen=0; while (flags == T_MORE) { if ((rlen=t_rcv(fd,rbuf,MAXDATALEN,&flags)) <= 0) { if( timeoutflag ) return( -1 ); wrlog(__FILE__,__LINE__,ffd,comstat,NULL); return(-1); } else { for(i=0;i<rlen;i++) rbuf[slen+i]=rbuf[i]; slen+=rlen; } rbuf[slen]='\0'; /* wrlog(__FILE__,__LINE__,ffd,comstat,rbuf); */ } return(0);}comend(fd)int fd;{ char comstat; comstat='E'; t_snddis(fd,NULL); t_free(retb,T_BIND); t_free(cli_t_sndcall,T_CALL); t_close(fd); wrlog(__FILE__,__LINE__,ffd,comstat,NULL);/* t_free(retb,T_BIND); t_free(cli_t_sndcall,T_CALL);*/}print_event(fd)int fd;{ switch(t_look(fd)) { case T_LISTEN: printf("Event : T_LISTEN\n"); break; case T_CONNECT: printf("Event : T_LISTEN\n"); break; case T_DATA: printf("Event : T_DATA\n"); break; case T_EXDATA: printf("Event : T_EXDATA\n"); break; case T_DISCONNECT: printf("Event : T_DISCONNECT\n"); break; case T_UDERR: printf("Event : T_UDERR\n"); break; case T_ORDREL: printf("Event : T_ORDREL\n"); break; case 0: printf("No Event\n"); break; default: printf("t_look error!!\n"); break; }}print_addr(addr)struct netbuf *addr;{int i;/* printf("Maxlen : %3d : ",addr->maxlen); for (i=0;i<addr->len;i++) printf("%02x ",(unsigned char)addr->buf[i]); printf("\n");*/}create_transport_endpoint(){int fd; if ((fd=t_open(NETDEVICE,O_RDWR,NULL)) != -1) { if (t_bind(fd,NULL,NULL) == 0) return(fd); else { printf("t_bind error\n"); return(-1); } } else { printf("t_open error\n"); return(-1); }}getdateA(hour,minute,second)int *hour,*minute,*second;{ int year0,month0,day0; char mon[4],tod[4]; long ymd; time(&ymd); sscanf(ctime(&ymd),"%s %s %d %d:%d:%d: %d",tod,mon,&day0,hour, minute,second,&year0);}wrlog(name,linenum,ffd,comstat,buf)char *name;int linenum;FILE *ffd;char comstat;char buf[];{ int *hour,*minute,*second; getdateA(&hour,&minute,&second); switch (comstat) { case 'I': fprintf(stderr,"file:%sline:%d",name,linenum ); fprintf(stderr,"%s %02d:%02d:%02d %c %d %s\n",ttyname(0), hour,minute,second,comstat,t_errno,buf); break; case 'C': case 'D': case 'E': fprintf(stderr,"file:%sline:%d",name,linenum ); fprintf(stderr,"%s %02d:%02d:%02d %c %d\n",ttyname(0), hour,minute,second,comstat,t_errno); break; case 'S': case 'R': fprintf(stderr,"file:%sline:%d",name,linenum ); fprintf(stderr,"%s %2d:%2d:%2d %c %s\n",ttyname(0), hour,minute,second,comstat,buf); break; default: break; }}int getaddr(comname,comaddr,cptype)char comname[10];char comaddr[8];int cptype;{ FILE *fp; int len,i,j,n; char buf[120], str[10],st1[21], st2[21],st3[4][10]; memset( comaddr,0,sizeof( comaddr )); if ((fp=fopen("/etc/hosts","r")) == NULL) { printf( "fopen err" ); return(-1); } while( (fgets(buf, 80, fp)) !=NULL) { if(buf[0]=='#') continue; sscanf(buf,"%s%s\n",st1,st2); if(strcmp(comname,st2)){ continue; } else {/*fprintf( stderr,"buf:%s,buf1:%s*\n",st1,st2 );*/ n=0; for(i=0,j=0;i<20,j<6;i++,j++) { if(st1[i]!='.'&&st1[i]!='\0') str[j]=st1[i]; else { str[j]='\0';/*fprintf( stderr,"str:%s*\n",str );*/ strcpy(st3[n],str); j=0; n++; strcpy(str," "); } if(st1[i]=='\0') break; } } } if(atoi(st3[0])==0) { fclose(fp); return(-1); } else { sprintf(comaddr,"%c%c%c%c%c%c%c%c", 0x00, /* 0x02 */ 0x02, /* cptype, */ host_port, 0x00, /* atoi(st3[0]), atoi(st3[1]), atoi(st3[2]), atoi(st3[3])); *//*20010306 0xAC, 0x10, 0x11, 0x11 );*/ host_ip1, host_ip2, host_ip3, host_ip4); fclose(fp);/*printf( "st3[0]:%s*\n",st3[0] );printf( "st3[1]:%s*\n",st3[1] );printf( "st3[2]:%s*\n",st3[2] );printf( "st3[3]:%s*\n",st3[3] );*/ return(0); } }wgetdate(year0,month0,day0)int *year0,*month0,*day0;{ int hour0,minute0,second0; char mon[4],tod[4]; long ymd; time(&ymd); sscanf(ctime(&ymd),"%s %s %d %d:%d:%d %d",tod,mon,day0,&hour0, &minute0,&second0,year0); if(strcmp(mon,"Dec")==0) *month0 = 12; if(strcmp(mon,"Nov")==0) *month0 = 11; if(strcmp(mon,"Oct")==0) *month0 = 10; if(strcmp(mon,"Sep")==0) *month0 = 9; if(strcmp(mon,"Aug")==0) *month0 = 8; if(strcmp(mon,"Jul")==0) *month0 = 7; if(strcmp(mon,"Jun")==0) *month0 = 6; if(strcmp(mon,"May")==0) *month0 = 5; if(strcmp(mon,"Apr")==0) *month0 = 4; if(strcmp(mon,"Mar")==0) *month0 = 3; if(strcmp(mon,"Feb")==0) *month0 = 2; if(strcmp(mon,"Jan")==0) *month0 = 1;}/*main(){ char ch; printf( "choose 1:jz" ); ch=getchar(); if( ch == '1' ) do_1(); else exit( 0 ); exit( 0 );}*/ do_1(){ int fd,i=1,jym=0; char ch; char sbuf[100]; char rbuf[100]; printf( "choose 1:201 2:202 3:213 " ); ch=getchar(); ch=getchar(); if( (ffd=fopen( "/tmp/kser.log","a" ) ) ==NULL ){ printf( "fopen /tmp/kser.log err" ); exit( 0 ); } if( ch == '1' ) jym=201; else if( ch == '2' ) jym=202; else if( ch == '3' ) jym=213; while( i < 2 ){ sprintf( sbuf,"TRANS_TYPE=%04d|ACCO_TYPE=0|ACCOUNT=6510005022630001047|AMOUNT=100.00|REQ_SERIAL=999999999000%d|",jym,i ); printf( "snd buf:%s*\n\n",sbuf ); getchar(); if( sndrcv_account( sbuf,rbuf ) ) printf( "sndrcv_account err" ); printf( "recv buf:%s*\n\n",rbuf ); getchar(); i++; } exit( 0 );}do_2(){/*strcpy( buf, "TRANS_TYPE=0212|ACCO_TYPE=0|ACCOUNT=6510098012110000252|PASSWD=38724923|TIME=102345|" );strcpy( buf, "TRANS_TYPE=0211|");strcpy( buf, "TRANS_TYPE=0201|ACCO_TYPE=0|ACCOUNT=6510005022630001047|AMOUNT=100.00|REQ_SERIAL=1000|" );strcpy( buf, "TRANS_TYPE=0202|ACCO_TYPE=0|ACCOUNT=6510005022630001047|AMOUNT=100.00|REQ_SERIAL=1001|" );strcpy( buf, "TRANS_TYPE=0213|ACCO_TYPE=0|ACCOUNT=6510005022630001047|AMOUNT=100.00|REQ_SERIAL=1000|" );strcpy( buf, "TRANS_TYPE=0213|ACCO_TYPE=0|ACCOUNT=6510005022630001047|AMOUNT=100.00|REQ_SERIAL=1000|" );*/}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -