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

📄 server.c

📁 服务器端网络编程
💻 C
📖 第 1 页 / 共 3 页
字号:
	if(sqlca.sqlcode==0)
		printf("OK!!connect to database SUCCESS!!!!!!\n");
	else
		printf("%.*s\n",sqlca.sqlerrm.sqlerrml,sqlca.sqlerrm.sqlerrmc);
        if((currency&(0x80000000))!=0)
                resp_type=27;
        else
        {
		switch(opertype)
		{
			case 1:
				/* EXEC SQL  EXECUTE
					BEGIN
					tem_plusvalue(:contract_id,:sequence,:currency,:account_balance,:resp_type);
				END;
				END-EXEC; */ 

{
    struct sqlexd sqlstm;
    sqlstm.sqlvsn = 12;
    sqlstm.arrsiz = 5;
    sqlstm.sqladtp = &sqladt;
    sqlstm.sqltdsp = &sqltds;
    sqlstm.stmt = "begin tem_plusvalue ( :contract_id , :sequence , :curren\
cy , :account_balance , :resp_type ) ; END ;";
    sqlstm.iters = (unsigned int  )1;
    sqlstm.offset = (unsigned int  )94;
    sqlstm.cud = sqlcud0;
    sqlstm.sqlest = (unsigned char  *)&sqlca;
    sqlstm.sqlety = (unsigned short)256;
    sqlstm.occurs = (unsigned int  )0;
    sqlstm.sqhstv[0] = (         void  *)contract_id;
    sqlstm.sqhstl[0] = (unsigned int  )21;
    sqlstm.sqhsts[0] = (         int  )0;
    sqlstm.sqindv[0] = (         void  *)0;
    sqlstm.sqinds[0] = (         int  )0;
    sqlstm.sqharm[0] = (unsigned int  )0;
    sqlstm.sqadto[0] = (unsigned short )0;
    sqlstm.sqtdso[0] = (unsigned short )0;
    sqlstm.sqhstv[1] = (         void  *)&sequence;
    sqlstm.sqhstl[1] = (unsigned int  )sizeof(int);
    sqlstm.sqhsts[1] = (         int  )0;
    sqlstm.sqindv[1] = (         void  *)0;
    sqlstm.sqinds[1] = (         int  )0;
    sqlstm.sqharm[1] = (unsigned int  )0;
    sqlstm.sqadto[1] = (unsigned short )0;
    sqlstm.sqtdso[1] = (unsigned short )0;
    sqlstm.sqhstv[2] = (         void  *)&currency;
    sqlstm.sqhstl[2] = (unsigned int  )sizeof(int);
    sqlstm.sqhsts[2] = (         int  )0;
    sqlstm.sqindv[2] = (         void  *)0;
    sqlstm.sqinds[2] = (         int  )0;
    sqlstm.sqharm[2] = (unsigned int  )0;
    sqlstm.sqadto[2] = (unsigned short )0;
    sqlstm.sqtdso[2] = (unsigned short )0;
    sqlstm.sqhstv[3] = (         void  *)&account_balance;
    sqlstm.sqhstl[3] = (unsigned int  )sizeof(int);
    sqlstm.sqhsts[3] = (         int  )0;
    sqlstm.sqindv[3] = (         void  *)0;
    sqlstm.sqinds[3] = (         int  )0;
    sqlstm.sqharm[3] = (unsigned int  )0;
    sqlstm.sqadto[3] = (unsigned short )0;
    sqlstm.sqtdso[3] = (unsigned short )0;
    sqlstm.sqhstv[4] = (         void  *)&resp_type;
    sqlstm.sqhstl[4] = (unsigned int  )sizeof(int);
    sqlstm.sqhsts[4] = (         int  )0;
    sqlstm.sqindv[4] = (         void  *)0;
    sqlstm.sqinds[4] = (         int  )0;
    sqlstm.sqharm[4] = (unsigned int  )0;
    sqlstm.sqadto[4] = (unsigned short )0;
    sqlstm.sqtdso[4] = (unsigned short )0;
    sqlstm.sqphsv = sqlstm.sqhstv;
    sqlstm.sqphsl = sqlstm.sqhstl;
    sqlstm.sqphss = sqlstm.sqhsts;
    sqlstm.sqpind = sqlstm.sqindv;
    sqlstm.sqpins = sqlstm.sqinds;
    sqlstm.sqparm = sqlstm.sqharm;
    sqlstm.sqparc = sqlstm.sqharc;
    sqlstm.sqpadto = sqlstm.sqadto;
    sqlstm.sqptdso = sqlstm.sqtdso;
    sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
}


				printf("%.*s\n",sqlca.sqlerrm.sqlerrml,sqlca.sqlerrm.sqlerrmc);
				printf("+++++++++++:%s\n",contract_id);                   
				if(resp_type==1)
					account_balance=currency;
				break;
			case 3:
				/* EXEC SQL  EXECUTE
					BEGIN
					tem_minusvalue(:contract_id,:sequence,:currency,:account_balance,:resp_type);
				END;
				END-EXEC; */ 

{
    struct sqlexd sqlstm;
    sqlstm.sqlvsn = 12;
    sqlstm.arrsiz = 5;
    sqlstm.sqladtp = &sqladt;
    sqlstm.sqltdsp = &sqltds;
    sqlstm.stmt = "begin tem_minusvalue ( :contract_id , :sequence , :curre\
ncy , :account_balance , :resp_type ) ; END ;";
    sqlstm.iters = (unsigned int  )1;
    sqlstm.offset = (unsigned int  )129;
    sqlstm.cud = sqlcud0;
    sqlstm.sqlest = (unsigned char  *)&sqlca;
    sqlstm.sqlety = (unsigned short)256;
    sqlstm.occurs = (unsigned int  )0;
    sqlstm.sqhstv[0] = (         void  *)contract_id;
    sqlstm.sqhstl[0] = (unsigned int  )21;
    sqlstm.sqhsts[0] = (         int  )0;
    sqlstm.sqindv[0] = (         void  *)0;
    sqlstm.sqinds[0] = (         int  )0;
    sqlstm.sqharm[0] = (unsigned int  )0;
    sqlstm.sqadto[0] = (unsigned short )0;
    sqlstm.sqtdso[0] = (unsigned short )0;
    sqlstm.sqhstv[1] = (         void  *)&sequence;
    sqlstm.sqhstl[1] = (unsigned int  )sizeof(int);
    sqlstm.sqhsts[1] = (         int  )0;
    sqlstm.sqindv[1] = (         void  *)0;
    sqlstm.sqinds[1] = (         int  )0;
    sqlstm.sqharm[1] = (unsigned int  )0;
    sqlstm.sqadto[1] = (unsigned short )0;
    sqlstm.sqtdso[1] = (unsigned short )0;
    sqlstm.sqhstv[2] = (         void  *)&currency;
    sqlstm.sqhstl[2] = (unsigned int  )sizeof(int);
    sqlstm.sqhsts[2] = (         int  )0;
    sqlstm.sqindv[2] = (         void  *)0;
    sqlstm.sqinds[2] = (         int  )0;
    sqlstm.sqharm[2] = (unsigned int  )0;
    sqlstm.sqadto[2] = (unsigned short )0;
    sqlstm.sqtdso[2] = (unsigned short )0;
    sqlstm.sqhstv[3] = (         void  *)&account_balance;
    sqlstm.sqhstl[3] = (unsigned int  )sizeof(int);
    sqlstm.sqhsts[3] = (         int  )0;
    sqlstm.sqindv[3] = (         void  *)0;
    sqlstm.sqinds[3] = (         int  )0;
    sqlstm.sqharm[3] = (unsigned int  )0;
    sqlstm.sqadto[3] = (unsigned short )0;
    sqlstm.sqtdso[3] = (unsigned short )0;
    sqlstm.sqhstv[4] = (         void  *)&resp_type;
    sqlstm.sqhstl[4] = (unsigned int  )sizeof(int);
    sqlstm.sqhsts[4] = (         int  )0;
    sqlstm.sqindv[4] = (         void  *)0;
    sqlstm.sqinds[4] = (         int  )0;
    sqlstm.sqharm[4] = (unsigned int  )0;
    sqlstm.sqadto[4] = (unsigned short )0;
    sqlstm.sqtdso[4] = (unsigned short )0;
    sqlstm.sqphsv = sqlstm.sqhstv;
    sqlstm.sqphsl = sqlstm.sqhstl;
    sqlstm.sqphss = sqlstm.sqhsts;
    sqlstm.sqpind = sqlstm.sqindv;
    sqlstm.sqpins = sqlstm.sqinds;
    sqlstm.sqparm = sqlstm.sqharm;
    sqlstm.sqparc = sqlstm.sqharc;
    sqlstm.sqpadto = sqlstm.sqadto;
    sqlstm.sqptdso = sqlstm.sqtdso;
    sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
}


				printf("%.*s\n",sqlca.sqlerrm.sqlerrml,sqlca.sqlerrm.sqlerrmc);
				if(resp_type==1)
					account_balance=currency;
				break;
			case 5:
				/* EXEC SQL  EXECUTE
					BEGIN
					tem_inquiry(:contract_id,:account_balance,:resp_type);
				END;
				END-EXEC; */ 

{
    struct sqlexd sqlstm;
    sqlstm.sqlvsn = 12;
    sqlstm.arrsiz = 5;
    sqlstm.sqladtp = &sqladt;
    sqlstm.sqltdsp = &sqltds;
    sqlstm.stmt = "begin tem_inquiry ( :contract_id , :account_balance , :r\
esp_type ) ; END ;";
    sqlstm.iters = (unsigned int  )1;
    sqlstm.offset = (unsigned int  )164;
    sqlstm.cud = sqlcud0;
    sqlstm.sqlest = (unsigned char  *)&sqlca;
    sqlstm.sqlety = (unsigned short)256;
    sqlstm.occurs = (unsigned int  )0;
    sqlstm.sqhstv[0] = (         void  *)contract_id;
    sqlstm.sqhstl[0] = (unsigned int  )21;
    sqlstm.sqhsts[0] = (         int  )0;
    sqlstm.sqindv[0] = (         void  *)0;
    sqlstm.sqinds[0] = (         int  )0;
    sqlstm.sqharm[0] = (unsigned int  )0;
    sqlstm.sqadto[0] = (unsigned short )0;
    sqlstm.sqtdso[0] = (unsigned short )0;
    sqlstm.sqhstv[1] = (         void  *)&account_balance;
    sqlstm.sqhstl[1] = (unsigned int  )sizeof(int);
    sqlstm.sqhsts[1] = (         int  )0;
    sqlstm.sqindv[1] = (         void  *)0;
    sqlstm.sqinds[1] = (         int  )0;
    sqlstm.sqharm[1] = (unsigned int  )0;
    sqlstm.sqadto[1] = (unsigned short )0;
    sqlstm.sqtdso[1] = (unsigned short )0;
    sqlstm.sqhstv[2] = (         void  *)&resp_type;
    sqlstm.sqhstl[2] = (unsigned int  )sizeof(int);
    sqlstm.sqhsts[2] = (         int  )0;
    sqlstm.sqindv[2] = (         void  *)0;
    sqlstm.sqinds[2] = (         int  )0;
    sqlstm.sqharm[2] = (unsigned int  )0;
    sqlstm.sqadto[2] = (unsigned short )0;
    sqlstm.sqtdso[2] = (unsigned short )0;
    sqlstm.sqphsv = sqlstm.sqhstv;
    sqlstm.sqphsl = sqlstm.sqhstl;
    sqlstm.sqphss = sqlstm.sqhsts;
    sqlstm.sqpind = sqlstm.sqindv;
    sqlstm.sqpins = sqlstm.sqinds;
    sqlstm.sqparm = sqlstm.sqharm;
    sqlstm.sqparc = sqlstm.sqharc;
    sqlstm.sqpadto = sqlstm.sqadto;
    sqlstm.sqptdso = sqlstm.sqtdso;
    sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
}


				printf("%.*s\n",sqlca.sqlerrm.sqlerrml,sqlca.sqlerrm.sqlerrmc);
				if(resp_type==1)
					account_balance=0xffffffff;
				break;
			default:
				printf("WRONG OPERA_TYPE %d\n",opertype);
				break;
		}
		*accountbalance=account_balance;
		printf("+++++++++++:%d\n",account_balance);                   
	}
	return resp_type;
}
	FILE * openfile()
	{
		FILE * fid;
		char * filename=ConfigFile;
		fid=fopen(filename,"r");
		if(fid==NULL)
		{
			printf("error opening file\n");
			exit(1);
		}
		return fid;
	}
	int readfile(FILE *fid)
	{
		unsigned int port;
		unsigned char IP[15];
		int i=0;
		fscanf(fid,"ServerPORT=%d\n",&port);
		while(!feof(fid))
		{
			//strcpy(IP,"EOF");
			fscanf(fid,"ClientIP=%s\n",IP);
			//if(IP[0]=='E')
			//	break;
			if(inet_aton(IP,&ClientIP[i++])==0)
			{
				perror("IP address error\n");
				exit(1);
			}
		}
		fclose(fid);
		return port;
	}
	int writelog(char * filename,Message_Head1 * phead,Message_Body1 * pbody,Message_Tail * ptail)
	{
		FILE * fid;
		int file_desc;
		int save_errno;
		for(;;)
		{
			file_desc=open(lock_file,O_RDWR|O_CREAT|O_EXCL,0444);
			if(file_desc==-1)
			{
				printf("%d---wait to save data\n",getpid());
				sleep(1);
			}
			else
			{
				break;
			}
		}
		fid=fopen(filename,"a+");
		if(fid==NULL)
		{
			printf("error opening file\n");
			return(-1);
		}
		else
		{
			fwrite(phead,sizeof(*phead),1,fid);
			fwrite(pbody,sizeof(*pbody),1,fid);
			fwrite(ptail,sizeof(*ptail),1,fid);
			fflush(fid);
			printf("%d---write log file\n",getpid());
			close(fid);
			//sleep(1);
		}
		(void)close(file_desc);
		(void)unlink(lock_file);
		return(0);
	}
	int readlog()
	{
		FILE * fid;
		Message_Head1 head;
		Message_Body1 body;
		Message_Tail  tail;
		(void)unlink(lock_file);
		fid=fopen(RecordFile,"r");
		if(fid==NULL)
		{
			printf("No Record File\n");
			return(0);
		}
		else
		{
			while(!feof(fid))
			{
				printf("%d---read log file\n",getpid());
				if(fread(&head,sizeof(head),1,fid)!=1)
					break;	
				if(fread(&body,sizeof(body),1,fid)!=1)
					break;
				if(fread(&tail,sizeof(tail),1,fid)!=1)
					break;
				head1_info_print(&head);
				body1_info_print(&body);
				tail_info_print(&tail);
				if(affirm(0,body.trader_serial)==26)
					writelog(TempFile,&head,&body,&tail);
			}
			fclose(fid);
			(void)unlink(RecordFile);
			rename(TempFile,RecordFile);
		}
		return 1;
	}

	struct sockaddr_in gethoststuff()
	{
		FILE *fid;
		int port;
		struct sockaddr_in sa;
		struct hostent * ph;
		char myname[MAXHOSTNAMELEN+1];
		fid=openfile();
		port=readfile(fid);
		gethostname(myname,MAXHOSTNAMELEN);
		printf("host name is %s\n",myname);
		printf("port is %d\n",port);
		//if((ph=gethostbyname(myname))==NULL)
		//{
		//    printf("gethostbyname failed\n");
		//    exit(1);
		//  }

		memset(&sa,0,sizeof(struct sockaddr_in));
		sa.sin_family=AF_INET;
		sa.sin_addr.s_addr=htonl(INADDR_ANY);
		sa.sin_port=htons(port);
		return sa;
	}

	int opensocket()
	{
		int s;
		s=socket(AF_INET,SOCK_STREAM,0);
		if(s<0)
		{
			perror("socket error");
			exit(1);
		}
		return s;
	}

	void bindnlisten(int s, struct sockaddr_in sa)
	{
		if(bind(s,(struct sockaddr *)&sa,sizeof(sa))<0)
		{
			perror("bind error");
			exit(1);
		}
		listen(s,5);
	}
	int acceptconn(int s,struct sockaddr_in * p_client_sa)
	{

⌨️ 快捷键说明

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