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

📄 heng.c

📁 站长96年写的一个Internet上用的股票行情、分析、交易、资讯程序源码
💻 C
📖 第 1 页 / 共 4 页
字号:
#include <windows.h>#include <windowsx.h>#include <stdio.h>#include <string.h>#include <stdlib.h>#include <io.h>                 #include <sys\stat.h>   #include <fcntl.h>              #include <time.h>//#include "dbf_data.h"#include "sv_jy.h"#include "jydest.h"#include "rsa.h"#define	__SERVER_CCR#include "heng.h"#define MAX_PATH_LEN	128#define	START_REC_NO	94//DBF_DATA CommFile;typedef struct  tag_ANSFILE{	HANDLE hf[MAX_ZQS_COUNT];	int recnum[MAX_ZQS_COUNT];	char path[MAX_ZQS_COUNT][MAX_PATH_LEN];}ANSFILE;ANSFILE AnsFile;typedef struct  tag_REQFILE{	HANDLE hf[MAX_ZQS_COUNT];	int recnum[MAX_ZQS_COUNT];	int currec[MAX_ZQS_COUNT];}REQFILE;REQFILE ReqFile;int ZqsCount;//char * CommBuffer;short rlen,hlen;char RetFilePath[80];BOOL fUseJy =FALSE,fTestJy=FALSE,fRsa=FALSE;int Thrd_SendJycx(int sd, int reqType, void *lpBuf, int);extern int sdJy;extern BOOL GetInitString(LPSTR, LPSTR, LPSTR);extern BOOL PutInitString(LPSTR, LPSTR, LPSTR);extern BOOL ErrMsg(HWND, LPSTR);//extern int UDP_SendBuff(LPSTR, int, LPSTR, int, LPDEST_INFO );#define	WriteRecord		WriteDatRecint WriteDatRec(HANDLE hd,int no,short hlen,short rlen,char  *rbuff){	DWORD bytes;	int i=0;	SetFilePointer(hd,(long)(hlen + rlen*(START_REC_NO +no -1)),NULL,FILE_BEGIN);	do	{		if(LockFile(hd,(DWORD)(hlen + rlen*(START_REC_NO +no -1)),0,rlen,0))			break;		else		Sleep(RETRY_DELAY +RETRY_DELAY/2);	}while(i<LOCK_RETRY_TIMES);	if(i>=LOCK_RETRY_TIMES)		return -1;	if(WriteFile(hd,rbuff,rlen,&bytes,NULL))	{		if(bytes!=(DWORD)rlen)		{			UnlockFile(hd,(DWORD)(hlen + rlen*(START_REC_NO +no -1)),0,rlen,0);			return -1;		}	}	else	{		UnlockFile(hd,(DWORD)(hlen + rlen*(START_REC_NO +no -1)),0,rlen,0);		return -1;	}	UnlockFile(hd,(DWORD)(hlen + rlen*(START_REC_NO +no -1)),0,rlen,0);	return 0;}#define	 ReadRecord   ReadDatRecint ReadDatRec(HANDLE hd,int no,short hlen,short rlen,char *rbuff){	DWORD bytes;	int i=0;	SetFilePointer(hd,(long)(hlen + rlen*(START_REC_NO+no -1)),NULL,FILE_BEGIN);	do	{		if(LockFile(hd,(DWORD)(hlen + rlen*(START_REC_NO +no -1)),0,rlen,0))			break;		else		Sleep(RETRY_DELAY +RETRY_DELAY/2);	}while(i<LOCK_RETRY_TIMES);	if(i>=LOCK_RETRY_TIMES)		return -1;	if(ReadFile(hd,rbuff,rlen,&bytes,NULL))	{		if(bytes!=(DWORD)rlen)		{			UnlockFile(hd,(DWORD)(hlen + rlen*(START_REC_NO +no -1)),0,rlen,0);			return -1;		}	}	else	{		UnlockFile(hd,(DWORD)(hlen + rlen*(START_REC_NO +no -1)),0,rlen,0);		return -1;	}	UnlockFile(hd,(DWORD)(hlen + rlen*(START_REC_NO +no -1)),0,rlen,0);	return 0;}int JyInit(void){       		int i,j;	    char tmp[256], temp[256],temp1[256];		char * prt;		REQUEST_BUFFER ReqBuf;		ANSWER Answer;		DWORD bytes;		memset(&ReqFile,0,sizeof(REQFILE));		memset(&AnsFile,0,sizeof(ANSFILE));		memset(&ReqBuf,0,sizeof(REQUEST_BUFFER));		memset(&Answer,0,sizeof(ANSWER));				if(GetInitString("JY", "RUN", tmp))		{			if(tmp[0] =='N' || tmp[0] =='n')			{				fUseJy =FALSE;				return 0;			}			else				fUseJy =TRUE;		}		if(GetInitString("JY", "TEST", tmp))		{			if(tmp[0] =='Y' || tmp[0] =='y')				fTestJy =TRUE;			else				fTestJy =FALSE;		}		else fTestJy =FALSE;         		if(GetInitString("JY", "RSA", tmp))		{			if(tmp[0] =='Y' || tmp[0] =='y')			{				fRsa =TRUE;				if(!ReadRsaFile(R,PK,SK))					ErrMsg(NULL,"读RSA加密参数失败,请在系统启动后按[Init]");			}		}		ZqsCount=0;		for(i=0;i<MAX_ZQS_COUNT;i++)		{			wsprintf(temp,"%s%d","COMMFILE",i);			if(!GetInitString("JY", temp, tmp))			{				if(ZqsCount==0)				{					wsprintf(temp, "不能发现配置%s:\n %s",						(LPSTR)"COMMFILE", (LPSTR)tmp);					ErrMsg(NULL, temp);				}				break;			}			else			{				ZqsCount++;				prt=strstr(tmp,";");				if(prt==NULL) 				{					ErrMsg(NULL,"format Reqfile;AnsFile");					return -1;				}				else *prt=0;				strcpy(temp1,tmp);				if(access(temp1,0)!=0)				{					ReqFile.hf[i]=CreateFile(temp1,GENERIC_READ|GENERIC_WRITE,						FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);					if(ReqFile.hf[i] ==INVALID_HANDLE_VALUE)					{						ErrMsg(NULL, "can not create comm file!");							return -1;					}					for(j=0;j<REQUESTLEN;j++)					{						if(WriteFile(ReqFile.hf[i],&ReqBuf,sizeof(REQUEST_BUFFER),&bytes,NULL))						{							if(bytes!=sizeof(REQUEST_BUFFER))							{								CloseHandle(ReqFile.hf[i]);								return -1;							}						}						else						{							CloseHandle(ReqFile.hf[i]);							return -1;						}					}				}				else				{					if(access(temp1,_S_IREAD|_S_IWRITE) <0)					{						wsprintf(temp, "不能存取%s:\n %s",						(LPSTR)"COMMFILE", (LPSTR)temp1);						ErrMsg(NULL, temp);						return -1;					}  					ReqFile.hf[i]=CreateFile(temp1,GENERIC_READ|GENERIC_WRITE,						FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);					if(ReqFile.hf[i] ==INVALID_HANDLE_VALUE)					{						ErrMsg(NULL, "can not create comm file!");							return -1;					}                }				//ReqFile.hf[i]=OpenDbfBase(temp1,O_RDWR);//				if(i==0)//				CommFile.hf=ReqFile.hf[0];								//if (ReqFile.hf[i]==-1)				//{				//	wsprintf(temp, "不能打开%s:\n %s",				//		(LPSTR)"COMMFILE", (LPSTR)temp1);				//	ErrMsg(NULL, temp);				//	return -1;				//} 				if(i==0)				{				//	if (InitBase(CommFile.hf,&CommFile.dbfStruct,				//		&CommFile.fldStruct,&CommFile.fldCount)				//	!=SUCCEED) 				//	{				//		wsprintf(temp, "不能处始化%s:\n %s",				//			(LPSTR)"COMMFILE", (LPSTR)temp1);				//		ErrMsg(NULL, temp);				//		return -1;				//	}					rlen= sizeof(REQUEST_BUFFER);					hlen= 0;				}				//ReqFile.recnum[i]= REQUESTLEN;				strcpy(temp1,++prt);				if(access(temp1,0)!=0)				{					AnsFile.hf[i]=CreateFile(temp1,GENERIC_READ|GENERIC_WRITE,						FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);					if(ReqFile.hf[i] ==INVALID_HANDLE_VALUE)					{						ErrMsg(NULL, "can not create comm ans file!");							return -1;					}					for(j=0;j<ANSWERLEN;j++)					{						if(WriteFile(AnsFile.hf[i],&Answer,sizeof(ANSWER),&bytes,NULL))						{							if(bytes!=sizeof(ANSWER))							{								CloseHandle(ReqFile.hf[i]);								CloseHandle(AnsFile.hf[i]);								return -1;							}						}						else						{							CloseHandle(AnsFile.hf[i]);							return -1;						}					}				}				else				{					if(access(temp1,_S_IREAD|_S_IWRITE) <0)					{						wsprintf(temp, "不能存取%s:\n %s",						(LPSTR)"COMMFILE", (LPSTR)temp1);						ErrMsg(NULL, temp);						return -1;					}  					AnsFile.hf[i]=CreateFile(temp1,GENERIC_READ|GENERIC_WRITE,						FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);					if(AnsFile.hf[i] ==INVALID_HANDLE_VALUE)					{						ErrMsg(NULL, "can not create comm ans file!");							return -1;					}                }				//AnsFile.hf[i]=OpenDbfBase(temp1,O_RDWR);								//if (ReqFile.hf[i]==-1)				//{				//	wsprintf(temp, "不能打开%s:\n %s",				//		(LPSTR)"COMMFILE", (LPSTR)temp1);				//	ErrMsg(NULL, temp);				//	return -1;				//} 				prt =strrchr(temp1,'\\');				++prt; *prt =0;				strcpy(&AnsFile.path[i][0],temp1);				AnsFile.recnum[i]=ANSWERLEN;				ReqFile.recnum[i]=REQUESTLEN;			}		}		return 0;		}int JyExit(void){	int i;		for(i=0;i<ZqsCount;i++)		{			if(ReqFile.hf[i]!=INVALID_HANDLE_VALUE)				CloseHandle(ReqFile.hf[i]);			if(AnsFile.hf[i]!=INVALID_HANDLE_VALUE)				CloseHandle(AnsFile.hf[i]);		}		return 0;}int Jy_Zqsxx(int sd){	int len;	BYTE SendBuff[1024];	strcpy(SendBuff, JY_ZQSXX_HEAD);	len =strlen(JY_ZQSXX_HEAD);	//memcpy(&SendBuff[len],&Zqsxx,sizeof(ZQSXX));	//len+=sizeof(Zqsxx);		memcpy(&SendBuff[len],R,DATALENGTH);	len +=DATALENGTH;	memcpy(&SendBuff[len],PK,DATALENGTH);	len +=DATALENGTH;	UDP_SendBuff("RSA.R.PK", sd, SendBuff, len,NULL);	return 0;}void ClearAns(LPJY_DEST lpJyDest){	char* buff;	buff =GlobalAllocPtr(GHND,rlen);	if(buff !=NULL)	{		memset(buff,0,rlen);		WriteRecord(AnsFile.hf[lpJyDest->zqsid],lpJyDest->recNum,hlen,rlen,buff);		GlobalFreePtr(buff);	}}void ClearReq(LPJY_DEST lpJyDest){	char* buff;	buff =GlobalAllocPtr(GHND,rlen);	if(buff !=NULL)	{		memset(buff,0,rlen);		buff[0] =0;		WriteRecord(ReqFile.hf[lpJyDest->zqsid],lpJyDest->recNum,hlen,rlen,buff);		GlobalFreePtr(buff);	}}int Jy_ChkUsr(int sd, int jyNum, LPJY_ASK_CHKUSR AskChkUser){	int ret;	LPJY_DEST lpJyDest;	short Qsid;	REQUEST_BUFFER ReqBuf;	ANSWER Answer;	if(ZqsCount ==1)		Qsid =1;	else	Qsid =AskChkUser->zqsid;	if(ReqFile.hf[Qsid -1] ==INVALID_HANDLE_VALUE)		return ANS_SYS_ERR;	ret =CheckJyDest(sd,REQ_CHKUSR, AskChkUser->jys,			AskChkUser->gddm, -1, &lpJyDest);	memset(&ReqBuf,0,rlen);	memset(&Answer,0,sizeof(ANSWER));	ReqBuf.command =3;	ReqBuf.status ='\001';	strcpy(ReqBuf.request.r_inq_account.argment,AskChkUser->gddm);	ReqBuf.request.r_inq_account.arg_type ='2';	ReqBuf.request.r_inq_account.password =atoi(AskChkUser->jymm);	//StringToFld(CommBuffer,CommFile.fldStruct[fld_GDDM],AskChkUser->gddm);	//CommBuffer[*(short*)(CommFile.fldStruct[fld_STKNO].offset)]	//	=(AskChkUser->jys ==0)?'Z':'H';	//StringToFld(CommBuffer,CommFile.fldStruct[fld_JYMM],AskChkUser->jymm);      	//CommBuffer[*(short*)(CommFile.fldStruct[fld_ASKNO].offset)]=REQ_CHKUSR;	//CommBuffer[*(short*)(CommFile.fldStruct[fld_STAT].offset)]=';';	//wsprintf(temp,"%d",sd);	//StringToFld(CommBuffer,CommFile.fldStruct[fld_ADDR],temp);	//wsprintf(temp,"%d",jyNum);	//StringToFld(CommBuffer,CommFile.fldStruct[fld_SERI],temp);	if(lpJyDest==NULL)		lpJyDest=GetFirstIdelRec();	if(lpJyDest==NULL)	{		ReqFile.currec[Qsid-1]++;		if(ReqFile.currec[Qsid-1]>ReqFile.recnum[Qsid-1])		{			ErrMsg(NULL, "无空闲交易表项!");      			return ANS_SYS_ERR;		}		lpJyDest=AddJyDest(sd, REQ_CHKUSR, AskChkUser->jys,				ReqFile.currec[Qsid-1], AskChkUser->gddm, jyNum,Qsid-1);		if(lpJyDest ==NULL)		{			ErrMsg(NULL, "不能加交易表项!");			return ANS_SYS_ERR;		}		//ClearAns(lpJyDest);		if(WriteRecord(ReqFile.hf[Qsid-1],lpJyDest->recNum,				hlen,rlen,(char *)&ReqBuf) !=0)		{			ErrMsg(NULL, "不能写交换文件!");      			return ANS_SYS_ERR;		}	}	else	{		//ClearAns(lpJyDest);		if(WriteRecord(ReqFile.hf[Qsid-1],lpJyDest->recNum,				hlen,rlen,(char *)&ReqBuf)!=0)		{			ErrMsg(NULL, "不能写交换文件1!");      			return ANS_SYS_ERR;		}		strcpy(lpJyDest->gddm,AskChkUser->gddm);		ChangeJyDest(sd, lpJyDest, REQ_CHKUSR, AskChkUser->jys,			Qsid -1,jyNum);	}	strcpy(lpJyDest->jymm,AskChkUser->jymm);	if(fTestJy)	{		Sleep(1000);		//CommBuffer[*(short*)(CommFile.fldStruct[fld_ASKNO].offset)]=REQ_NULL;		//CommBuffer[*(short*)(CommFile.fldStruct[fld_ANSNO].offset)]=ANS_SUCC;		//CommBuffer[*(short*)(CommFile.fldStruct[fld_STAT].offset)]=';';		//wsprintf(temp,"%d",jyNum);		//StringToFld(CommBuffer,CommFile.fldStruct[fld_SERI],temp);		strcpy(Answer.a_inq_account.status,"000");		Answer.a_inq_account.fund_account=atoi(AskChkUser->gddm);		WriteRecord(AnsFile.hf[Qsid-1],lpJyDest->recNum,			0,sizeof(ANSWER),(char *)&Answer);	}	return 0;}int Jy_ChgPwd(int sd, int jyNum, LPJY_ASK_CHGPWD AskChgPwd){	LPJY_DEST lpJyDest=NULL;

⌨️ 快捷键说明

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