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

📄 pc_net.c

📁 证券交易系统
💻 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 + -