亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? bank_svr.sqc.bak

?? 轉(zhuǎn)發(fā)交易接口
?? BAK
?? 第 1 頁 / 共 2 頁
字號:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sql.h>
#include <sqlenv.h>
#include <sqlda.h>
#include <sqlca.h>
#include <sqlutil.h>
#include <db2ApiDf.h>
#include <ctype.h>

# include <sys/types.h>
# include <sys/socket.h>
# include <sys/uio.h>
# include <sys/file.h>
# include <sys/ioctl.h>
# include <sys/errno.h>
# include <sys/wait.h>
# include <netinet/in.h>
# include <sys/select.h>
# include <sys/signal.h>
/*# include <sys/ipc.h>
# include <sys/msg.h>
# include <sys/shm.h>*/
# include <netdb.h>
# include <math.h>
# include <sys/stat.h>
# include <time.h>
# include <fcntl.h>
# include <unistd.h>

#include "public.h"
#include "dbpub.h"
#include "bankpack.h"


char localip[21];
int localport;
int TimeOut;

EXEC SQL BEGIN DECLARE SECTION;
    char dbAlias[15];
    char user[128 + 1];
    char pswd[15];
EXEC SQL END DECLARE SECTION;

void	sig_child();
void	sig_Terminate();

/*自助發(fā)卡機庫存查詢*/
void kccx(int rcvSocket, REQHEAD *reqpack);
/*清裝卡情況明細查詢*/
void zqkmxcx(int rcvSocket, REQHEAD *reqpack);
/*清裝卡情況匯總查詢*/
void zqkhzcx(int rcvSocket, REQHEAD *reqpack);
/*發(fā)卡明細*/
void famxcx(int rcvSocket, REQHEAD *reqpack);
/*返回銀行組包并發(fā)送*/
void SendToBank(int rcvSocket, int retcode, int datalen, char *sndData);

main()
{
	char tmpstr[128], msg[256];
	int	listenSocket;
	int 	ret , fromlen, forkint;
	struct	sockaddr_in from, server;
    	struct timeval timeout;

	if (ReadConfg("DATABASE", "DBALIAS", dbAlias, "DBEBRS") < 0)
	{
		debugLog(__FILE__, __LINE__, "讀[DATABASE]DBALIAS fail");
		exit( -1);
    	}
    	if (ReadConfg("DATABASE", "USER", user, "ebcs") < 0)
    	{
		debugLog(__FILE__, __LINE__, "讀[DATABASE]USER fail");
        	exit( -1);
    	}
    	if (ReadConfg("DATABASE", "PASSWD", pswd, "ebcs") < 0)
    	{
		debugLog(__FILE__, __LINE__, "讀[DATABASE]PASSWD fail");
        	exit( -1);
    	}
    	if (ReadConfg("BANK_SVR", "LOCALIP", localip, "127.0.0.1") < 0)
    	{
		debugLog(__FILE__, __LINE__, "讀[BANK_SVR]LOCALIP fail");
        	exit( -1);
    	}
    	memset(tmpstr, 0x00, sizeof(tmpstr));
    	if (ReadConfg("BANK_SVR", "LOCALPORT", tmpstr, "8001") < 0)
    	{
		debugLog(__FILE__, __LINE__, "讀[BANK_SVR]LOCALPORT fail");
        	exit( -1);
    	}
    	localport = atoi(tmpstr);
    	memset(tmpstr, 0x00, sizeof(tmpstr));
    	if (ReadConfg("BANK_SVR", "TIMEOUT", tmpstr, "60") < 0)
    	{
		debugLog(__FILE__, __LINE__, "讀[BANK_SVR]TIMEOUT fail");
        	exit( -1);
    	}
    	TimeOut = atoi(tmpstr);

	signal( SIGCLD, sig_child );

	signal( SIGCLD, SIG_IGN );

	signal( SIGINT, sig_Terminate );

	signal( SIGQUIT, sig_Terminate );

	signal( SIGPIPE, sig_Terminate );

	signal( SIGTERM, sig_Terminate );

	signal( SIGUSR1, sig_Terminate );

	listenSocket = socket( AF_INET, SOCK_STREAM, 0 );

	if( listenSocket < 0 )

	{
		debugLog(__FILE__, __LINE__, "create listen socket fail.");
		exit( 1 );

	}

	server.sin_family = AF_INET;

	server.sin_addr.s_addr = htonl(INADDR_ANY);

	server.sin_port = htons( localport );

	if (bind( listenSocket, (struct sockaddr *)&server, sizeof(server)) < 0)
	{
		debugLog(__FILE__, __LINE__, "listen socket bind fail.");

		exit( 1 );

	}
        printf("listen....... \n");   
	listen( listenSocket, 5 );

	debugLog(__FILE__, __LINE__, "bank_svr listen is running" );

	for(;;)
	{
		int 	rcvSocket;

		fromlen = sizeof(server);

		rcvSocket = accept( listenSocket, (struct sockaddr *)&from, &fromlen );
		if( rcvSocket < 0 )
		{
			debugLog(__FILE__, __LINE__, "Accept fail.");

			sleep(10000);

			continue;

		}

		if( ( forkint = fork() ) < 0 )
		{

			debugLog(__FILE__, __LINE__, "fork child process fail.");
			sleep(10000);
			close(rcvSocket);
			continue;
		}

		else if ( forkint == 0) //child  process
		{
			char packlen[9];
			char jydm[7];
			int rcvlen, rlen, bodylen;
			fd_set fdr;
			REQHEAD reqpack;
 			printf("Create a Process....... \n");   
			close( listenSocket );
            		FD_ZERO(&fdr);
            		FD_SET(rcvSocket, &fdr);
            		timeout.tv_sec = TimeOut;
            		timeout.tv_usec = 0;
			
            		rcvlen = select(rcvSocket + 1, &fdr, (fd_set *)0, (fd_set *)0, &timeout); 
            		if (rcvlen <= 0)
            		{
              		  	debugLog(__FILE__, __LINE__, "Receive timeout select = %-d", rcvlen);
              		  	close(rcvSocket);
                		exit(0);
            		}
            		rcvlen = read(rcvSocket, packlen, PACKLENLEN);
            		if (rcvlen != PACKLENLEN)
            		{
                		debugLog(__FILE__, __LINE__, "receive pack len error len = %-d", rcvlen);
                		close(rcvSocket);
                		exit(0);
            		}
            		memset(&reqpack, 0x00, sizeof(REQHEAD));
            		rcvlen = read(rcvSocket, &reqpack, atoi(packlen));
            		if (rcvlen < sizeof(REQHEAD) - 2048)  //長度不夠請求包頭,REQHEAD中除TIATRDATA[2048]外
            		{
                		debugLog(__FILE__, __LINE__, "receive pack error len = %-d", rcvlen);
                		close(rcvSocket);
                		exit(0);
            		}
            		rcvlen = sizeof(REQHEAD) - 2048; 
            		/*不同交易做不同處理,銀行發(fā)起的交易交易碼放TIAFECODE中
            		//900000自助發(fā)卡機庫存查詢、900001自助發(fā)卡機清裝卡情況明細查詢
            		//900001自助發(fā)卡機清裝卡情況匯總查詢、900003發(fā)卡明細打印*/
            		memcpy(jydm, reqpack.TIAFECODE, 6);
            		
            		if (memcmp(reqpack.TIAFECODE, "900000", 6) == 0)
            		{
				/*自助發(fā)卡機庫存查詢*/
				debugLog(__FILE__, __LINE__, "發(fā)卡機庫存查詢receive bank req jydm = %s bodylen = %-d", jydm, rcvlen);
				kccx(rcvSocket, &reqpack);
            		}
            		/*
            		else if (memcmp(reqpack.TIAFECODE, "900001", 6) == 0)
            		{
				//清裝卡情況明細查詢
				debugLog(__FILE__, __LINE__, "清裝卡情況明細查詢receive bank req jydm = %s bodylen = %-d", jydm, rcvlen);
				zqkmxcx(rcvSocket, &reqpack);
            		}
            		else if (memcmp(reqpack.TIAFECODE, "900002", 6) == 0)
            		{
				//清裝卡情況匯總查詢
				debugLog(__FILE__, __LINE__, "清裝卡情況匯總查詢receive bank req jydm = %s bodylen = %-d", jydm, rcvlen);
				zqkhzcx(rcvSocket, &reqpack);
            		}
            		else if (memcmp(reqpack.TIAFECODE, "900003", 6) == 0)
            		{
				//發(fā)卡明細
				debugLog(__FILE__, __LINE__, "發(fā)卡明細receive bank req jydm = %s bodylen = %-d", jydm, rcvlen);
				famxcx(rcvSocket, &reqpack);
            		}
            		*/
			else
				debugLog(__FILE__, __LINE__, "receive unsupport pack");
			close(rcvSocket);
			exit(0);
		}
		else
		{
			/*wait(&errno);*/
			close( rcvSocket );
		}
	}
}

/*自助發(fā)卡機庫存查詢*/
void kccx(int rcvSocket, REQHEAD *reqpack)
{
	ANS_HEAD anspack;
  	struct sqlca sqlca;
  	char errorMsg[1024], snddata[4097];
  	int sndlen;
	int retcode;
	memset(snddata, 0x20, sizeof(snddata) - 1);
	snddata[sizeof(snddata) - 1] = 0x00;

	EXEC SQL BEGIN DECLARE SECTION;
		char termno[8]; /*自助機具號X(7)*/
  		long Records;
  		char lsh[32];
		char pc[32];     /*裝/清卡編號(批次號)X(15)*/
		char jgh[32];    /*機構(gòu)號X(7)*/
		char gyh[32];    /*當前加卡柜員X(07)*/
		char jkks[32];     /*初始卡數(shù)	9(8)*/
		char yeks[32];     /*剩余卡數(shù)	9(8)*/
		char hsks[32];     /*回收卡數(shù)	9(8)*/
		char ffks[32];     /*成功發(fā)卡	9(8)*/
		char kyks[32];     /*可疑卡數(shù)	9(8)*/
  		char tmpstr[36];
	EXEC SQL END DECLARE SECTION;

	memset(termno, 0x00, sizeof(termno));
	memcpy(termno, reqpack->TIATRDATA, 7);
	Alltrim(termno);
	memset(pc, 0x00, sizeof(pc));
	memcpy(pc, reqpack->TIATRDATA + 7, 15);
	Alltrim(pc);
	
  	EXEC SQL SELECT sbdm
   	 INTO :tmpstr
   	 FROM jqxxzt
   	 WHERE sbdm = :termno;
  	if (sqlca.sqlcode == 100)   /*無該發(fā)卡機處理*/                          
 	{                                                  
        	retcode = 1000; /*無該發(fā)卡機處理*/
        	strcpy(snddata, "無該發(fā)卡機設備");
  	        debugLog(__FILE__, __LINE__, "庫存查詢,無該發(fā)卡機設備termno = %s", termno);
        	SendToBank(rcvSocket, retcode, strlen(snddata), snddata);
        	return;
  	}
  	else if (sqlca.sqlcode != 0)   /*報錯處理*/
  	{
                SqlInfoGet(errorMsg, &sqlca);
  	        debugLog(__FILE__, __LINE__, "select sql false SQLCODE = [%-d]%s\n", sqlca.sqlcode, errorMsg);
        	retcode = abs(sqlca.sqlcode)%10000; //
        	strcpy(snddata, errorMsg);
        	SendToBank(rcvSocket, retcode, strlen(snddata), snddata);
  	        return;
  	}
  	
  	//取當前庫存
        	EXEC SQL SELECT Iss20, Iss8, Iss11, Iss18, Iss17
   	 	 INTO :jgh, :gyh, :jkks, :yeks, :hsks
   	 	 FROM CardBox
   	 	 WHERE Iss21 = :termno and Iss3 = :pc; 
		if (sqlca.sqlcode != 0)   /*報錯處理*/
  		{
            		SqlInfoGet(errorMsg, &sqlca);
  	    		debugLog(__FILE__, __LINE__, "select sql false SQLCODE = [%-d]%s\n", sqlca.sqlcode, errorMsg);
        	        retcode = abs(sqlca.sqlcode)%10000; //
        	        strcpy(snddata, errorMsg);
        	        SendToBank(rcvSocket, retcode, strlen(snddata), snddata);
  	    		return;
  		}
  		
       	

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲图片激情小说| 欧美精品日韩一本| 亚洲国产裸拍裸体视频在线观看乱了 | 成人av在线播放网址| 国产无人区一区二区三区| 91视视频在线观看入口直接观看www| 一区二区三区在线播放| 欧美一级久久久久久久大片| 国产成人av影院| 亚洲欧美另类在线| 精品国一区二区三区| 久久精品国产77777蜜臀| 亚洲激情成人在线| 2020国产精品| 色狠狠av一区二区三区| 精品综合免费视频观看| 久久精品在这里| 欧美放荡的少妇| av亚洲精华国产精华精| 久久精品国产秦先生| 欧美韩国日本综合| 在线观看亚洲精品| 床上的激情91.| 亚洲午夜电影网| 欧美韩国日本一区| ww亚洲ww在线观看国产| 99久久婷婷国产| 麻豆精品视频在线观看视频| 亚洲午夜激情av| **欧美大码日韩| 国产欧美日韩综合| 精品久久免费看| 日韩免费一区二区| 欧美一区二区在线观看| voyeur盗摄精品| k8久久久一区二区三区| 国产又粗又猛又爽又黄91精品| 日产欧产美韩系列久久99| 一区二区三区四区高清精品免费观看 | 天天操天天色综合| 成人欧美一区二区三区1314| 久久日一线二线三线suv| 2023国产精品视频| 日韩一级二级三级精品视频| 欧美裸体一区二区三区| 99久久99久久精品免费观看 | 91色|porny| 成人av免费在线播放| 国产精品99久| 国产激情一区二区三区桃花岛亚洲| 韩国一区二区视频| 美女网站色91| 国产一区视频网站| 高清beeg欧美| 成人毛片在线观看| www.欧美精品一二区| 成人深夜在线观看| 99精品久久只有精品| 波多野结衣亚洲| 国产精品一区专区| 国产精品小仙女| 国产不卡视频在线播放| 99久久免费视频.com| 色天使色偷偷av一区二区| 一本在线高清不卡dvd| 色噜噜狠狠成人网p站| av不卡一区二区三区| 91免费版在线看| 欧美午夜电影网| 欧美日韩黄视频| 精品国产一区二区在线观看| 久久久久久久久久久电影| 久久久777精品电影网影网| 欧美大片在线观看一区二区| 国产欧美日韩在线看| 1024成人网| 亚洲chinese男男1069| 日本成人在线视频网站| 国产美女娇喘av呻吟久久| 成人精品国产免费网站| 国产精品123| 亚洲视频你懂的| 国产精品无人区| 伊人开心综合网| 日韩国产成人精品| 国产精品一区二区在线看| 波多野结衣在线一区| 91成人看片片| 日本韩国欧美一区| 7777精品伊人久久久大香线蕉超级流畅| 91久久人澡人人添人人爽欧美| 欧美在线不卡视频| 精品欧美一区二区三区精品久久 | 爽好久久久欧美精品| 日韩高清一区在线| 亚洲成av人影院在线观看网| 玖玖九九国产精品| 成人亚洲精品久久久久软件| 色乱码一区二区三区88| 日韩一区二区影院| ...中文天堂在线一区| 天天av天天翘天天综合网 | 26uuu欧美日本| 国产精品看片你懂得| 日韩电影在线观看网站| 蜜臀av亚洲一区中文字幕| 91香蕉国产在线观看软件| 日韩欧美国产午夜精品| ...av二区三区久久精品| 美腿丝袜亚洲一区| 色综合网站在线| 欧美精品一区二区三区蜜臀| 亚洲色图19p| 久久99热这里只有精品| 成人免费视频播放| 欧美videossexotv100| 一区二区激情小说| 粉嫩av一区二区三区粉嫩| 91蜜桃网址入口| 国产喂奶挤奶一区二区三区| 亚洲亚洲精品在线观看| 日韩电影在线免费| 91久久精品一区二区二区| 欧美一区二区在线不卡| 亚洲裸体xxx| 国产麻豆视频一区| 欧美一区二区黄| 自拍偷拍国产亚洲| 国产一区在线观看麻豆| 欧美精品第1页| 亚洲精品在线观看网站| 首页国产欧美久久| 在线这里只有精品| 久久噜噜亚洲综合| 亚洲成av人在线观看| 欧洲精品视频在线观看| 欧美激情综合在线| 国产精品综合一区二区| 日韩欧美你懂的| 丝袜诱惑亚洲看片| 欧美精品一级二级| 亚洲在线免费播放| 成人久久视频在线观看| 中文字幕乱码亚洲精品一区| 国产精品白丝jk白祙喷水网站 | 免费高清不卡av| 欧美日韩精品二区第二页| 国产人成亚洲第一网站在线播放| 日韩av中文在线观看| 91精品黄色片免费大全| 亚洲黄色尤物视频| 国产精品自拍三区| 久久久精品中文字幕麻豆发布| 精品一区二区三区av| 99精品欧美一区二区三区小说 | 国产精品狼人久久影院观看方式| 成人一区二区三区视频在线观看| 国产亚洲欧美日韩日本| 国产乱淫av一区二区三区| 国产欧美综合在线观看第十页| 奇米一区二区三区av| 久久夜色精品一区| 福利一区福利二区| 成人免费视频在线观看| 91免费国产在线| 亚洲成在人线免费| 成人sese在线| 精品日韩在线观看| 丁香五精品蜜臀久久久久99网站 | 精品粉嫩超白一线天av| 狠狠色综合日日| 精品99一区二区| 成人高清免费观看| 一区二区三区在线不卡| 欧美a级理论片| 国产精品不卡一区| 色94色欧美sute亚洲线路一ni| 天天综合色天天综合色h| 精品免费国产一区二区三区四区| 日韩精品成人一区二区三区| 日韩欧美在线观看一区二区三区| 国产一区中文字幕| 亚洲视频一区二区在线观看| 波多野结衣中文一区| 一区二区三区四区激情| 在线视频欧美精品| 免费高清不卡av| 日韩欧美亚洲国产另类| av男人天堂一区| 亚洲天堂成人在线观看| 欧美精品在线观看一区二区| 国产精品一区二区黑丝| 亚洲男人的天堂av| 日本福利一区二区| 午夜一区二区三区在线观看| 欧美日韩久久不卡| 国产精品自拍一区| 国产精品乱码人人做人人爱| 欧美日韩国产区一| 国产一区二区电影|