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

📄 hq_tcp.c

📁 站长96年写的一个Internet上用的股票行情、分析、交易、资讯程序源码
💻 C
📖 第 1 页 / 共 3 页
字号:
		lc =0;		while(i<GraphData.minEnd)		{			tim1 =GraphData.lpGraData[i].tim;			if(tim1 >tim)			{				//i++;				//tim=tim1;				break;			}			lc +=GraphData.lpGraData[i].lc;			i++;		}		if(i-1<GraphData.minEnd && tim >0)		{			j =i-1;			GraphData.lpMinLc[GraphData.minCount] =lc;			GraphData.lpMinPos[GraphData.minCount++] =j;		}		tim =tim1;	}	return 0;}int GraRecalcJgMax(){	int i;	float min_val, max_val, f1;		if(GraphData.minCount <=0) return 0;	min_val =max_val =GraphData.lpGraData[0].zjjg;	//max_val =GraphData.GraHead.zgjg;		for(i =1; i<GraphData.minCount && i<GraphData.minEnd; i++)	{		if(min_val >GraphData.lpGraData[GraphData.lpMinPos[i]].zjjg)			min_val =GraphData.lpGraData[GraphData.lpMinPos[i]].zjjg;		if(max_val <GraphData.lpGraData[GraphData.lpMinPos[i]].zjjg)			max_val =GraphData.lpGraData[GraphData.lpMinPos[i]].zjjg;	}	if(min_val ==0) min_val -=(float)0.001;	if(max_val ==0) max_val +=(float)0.001;	//min_val =(float)(min_val*(1-0.001)-0.01);	//max_val =(float)(max_val*(1+0.001)+0.01);		if(max_val <0) max_val *=-1;	if(min_val <0) min_val *=-1;	if(min_val >max_val) max_val =min_val;		f1 =0;	/*while(1)	{		if((f1+0.05)*5>max_val)		{			max_val =(float)((f1+0.05)*5);			f1+=(float)0.05;			break;		}		f1+=(float)0.05;	}	*/	max_val =max_val+GraphData.GraHead.zrsp*(float)0.002;		GraphData.GraHead.zgjg =max_val;	GraphData.GraHead.zdjg =0-max_val;		return 0;}int GraRecalcLcMax(){	int i;		long max_val =GraphData.lpMinLc[0];		if(GraphData.minCount <=0) return 0;		for(i =1; i<GraphData.minCount && i<GraphData.minEnd; i++)	{		if(max_val <GraphData.lpMinLc[i])			max_val =GraphData.lpMinLc[i];	}	max_val =(long)((double)max_val*(1+0.2)+5);		GraphData.GraHead.zglc =max_val;		return 0;}int MaxMinChangeHqData(int jys, int maxmin){	int i, j;		for(i =0; i<4; i++)		for(j =0; j<10; j++)		{			/////////////			if(MaxMinData[jys][maxmin].recNum[i][j] >=HqData[jys].recCount)				return -1;			HqData[jys].lpRefData[MaxMinData[jys][maxmin].recNum[i][j]].zjjg					=MaxMinData[jys][maxmin].MaxMin[i][j].zjjg;			HqData[jys].lpRefData[MaxMinData[jys][maxmin].recNum[i][j]].zdf					=MaxMinData[jys][maxmin].MaxMin[i][j].zdf;			HqData[jys].lpRefData[MaxMinData[jys][maxmin].recNum[i][j]].cjss					=MaxMinData[jys][maxmin].MaxMin[i][j].cjss;		}	return 0;}void UDP_Send_Exit(void){	int i, len,x,tlen;	char temp[40];		temp[0]=DATA_START_SIGN;	*(int*)&temp[1]=strlen(CLNT_EXIT);	memcpy(&temp[1+sizeof(int)],CLNT_EXIT,strlen(CLNT_EXIT));		tlen =1+sizeof(int)+strlen(CLNT_EXIT);	for(i =0,x=0; i<10; i++)	{		len =send(sdHq, &temp[x],tlen -x, 0);		if (len == SOCKET_ERROR)		{			if (h_errno == WSAEWOULDBLOCK)				continue;			else 				return;		}		if(x+len!=tlen)			x+=len;		else			break;	}}int UDP_Read_DataDay(LPSTR lpTmp, int len){	char temp[128];	char jys;	int gp_rec_num,sendCount,sendNum,i;	HFILE hf;	OFSTRUCT os;	DAY_DATA DataDayBuff;	jys=*lpTmp++;	len -=1;	if(len <=0) goto ReadDataDayErr;	gp_rec_num=*(int *)lpTmp;	lpTmp +=sizeof(int);	len -=sizeof(int);	if(len <=0) goto ReadDataDayErr;	sendCount=*(int *)lpTmp;	lpTmp +=sizeof(int);	len -=sizeof(int);	if(len <=0) goto ReadDataDayErr;	sendNum=*(int *)lpTmp;	lpTmp +=sizeof(int);	len -=sizeof(int);	if(len <=0) goto ReadDataDayErr;	wsprintf(temp, "%s\\%s.day",szDataPath, HqData[GraphData.jys].lpPreData[GraphData.recNum].zqdm);	hf =OpenFile(temp, &os, OF_SHARE_DENY_NONE|OF_READWRITE);	if(hf ==HFILE_ERROR)		hf =OpenFile(temp, &os, OF_SHARE_DENY_NONE|OF_CREATE|OF_WRITE);	if(hf !=HFILE_ERROR)	{		for(i=0;i<sendCount;i++) 		{		       memset(&DataDayBuff,0,sizeof(DAY_DATA));		       memcpy(&DataDayBuff,lpTmp,sizeof(DAY_DATA));		       lpTmp+=sizeof(DAY_DATA);		       len-=sizeof(DAY_DATA);		       if(len<0)		       {			    goto  ReadDataDayErr;		       }		       _llseek(hf, 0l, SEEK_END);		       _lwrite(hf, &DataDayBuff, sizeof(DAY_DATA));		}		_lclose(hf);	}	if(IsWindowVisible(ghWndFx))	{   	    Fx->IsDataOk=FALSE;		InvalidateRect(ghWndFx, NULL, TRUE);	}		return TRUE;		ReadDataDayErr:		return FALSE;}int UDP_Send_DataDay(int jys, int rec_num){	int len = 0,data_rec_end;       char temp[128];	char  WriteBuf[MAX_WRITE_BUF_SIZE+1];    	HFILE hf;	OFSTRUCT os;	wsprintf(temp, "%s\\%s.day", szDataPath,HqData[GraphData.jys].lpPreData[GraphData.recNum].zqdm);	hf =OpenFile(temp, &os, OF_SHARE_DENY_NONE|OF_READWRITE);	if(hf ==HFILE_ERROR)	data_rec_end=0;    else    {	data_rec_end=(int)_llseek(hf, 0l, SEEK_END)/sizeof(DAY_DATA);    }               _lclose(hf);	strcpy(WriteBuf, DATA_DAY_HEAD);	len=strlen(DATA_DAY_HEAD);	WriteBuf[len]=jys;	len++;	*((int *)&WriteBuf[len]) =rec_num;	len +=sizeof(int);	*((int *)&WriteBuf[len]) =data_rec_end;        	len +=sizeof(int);	return UDP_Send_Hq(&WriteBuf[0], DATA_DAY_HEAD, len);}int HqCheckUser(char *userID, char *userPwd){	int len;	char  WriteBuf[MAX_WRITE_BUF_SIZE+1];	               	               	strcpy(WriteBuf, HQ_CHKUSR_HEAD);	len=strlen(HQ_CHKUSR_HEAD);	memcpy(&WriteBuf[len], userID, HQ_USERID_SIZE);	len +=HQ_USERID_SIZE;	memcpy(&WriteBuf[len], userPwd, HQ_USERPWD_SIZE);	len +=HQ_USERPWD_SIZE;	return UDP_Send_Hq(&WriteBuf[0], HQ_CHKUSR_HEAD, len);}extern HWND ghDlgChkUsr;int UDP_Read_ChkUsr(LPSTR lpTmp, int len){	SendMessage(ghDlgChkUsr, WM_COMMAND, 100, (LPARAM)(int)*lpTmp);		return 0;}BOOL HqAllocMem(int jys){	if(HqData[jys].lpPreData ==NULL)		HqData[jys].lpPreData =(LPHQ_PRE_DATA)GlobalAllocPtr(GHND,			HqData[jys].recCount*sizeof(HQ_PRE_DATA));	else		HqData[jys].lpPreData =(LPHQ_PRE_DATA)GlobalReAllocPtr(HqData[jys].lpPreData,			HqData[jys].recCount*sizeof(HQ_PRE_DATA), GMEM_MOVEABLE);			if(HqData[jys].lpRefData ==NULL)		HqData[jys].lpRefData =(LPHQ_REF_DATA)GlobalAllocPtr(GHND,			HqData[jys].recCount*sizeof(HQ_REF_DATA));	else		HqData[jys].lpRefData =(LPHQ_REF_DATA)GlobalReAllocPtr(HqData[jys].lpRefData,			HqData[jys].recCount*sizeof(HQ_REF_DATA), GMEM_MOVEABLE);	if(HqData[jys].lpPreData ==NULL || HqData[jys].lpRefData ==NULL)	{		HqData[jys].recCount =0;		ErrMsg(NULL,"alloc record data memory failed!");		return FALSE;	}	if(HqData[jys].isLcChanged ==NULL)		HqData[jys].isLcChanged =(BOOL *)GlobalAllocPtr(GHND,			HqData[jys].recCount*sizeof(BOOL));	else		HqData[jys].isLcChanged =(BOOL *)GlobalReAllocPtr(HqData[jys].isLcChanged,			HqData[jys].recCount*sizeof(BOOL), GHND);	if(HqData[jys].isJgChanged ==NULL)		HqData[jys].isJgChanged =(BOOL *)GlobalAllocPtr(GHND,			HqData[jys].recCount*sizeof(BOOL));	else		HqData[jys].isJgChanged =(BOOL *)GlobalReAllocPtr(HqData[jys].isJgChanged,			HqData[jys].recCount*sizeof(BOOL), GHND);	if(HqData[jys].isJgChanged ==NULL || HqData[jys].isLcChanged ==NULL)	{		HqData[jys].recCount =0;		ErrMsg(NULL,"alloc changed data memory failed!");		return FALSE;	}	if(HqData[jys].isReadOK ==NULL)		HqData[jys].isReadOK =(BOOL *)GlobalAllocPtr(GHND,			HqData[jys].recCount*sizeof(BOOL));	else		HqData[jys].isReadOK =(BOOL *)GlobalReAllocPtr(HqData[jys].isReadOK,			HqData[jys].recCount*sizeof(BOOL), GHND);	if(HqData[jys].isReadOK ==NULL)	{		HqData[jys].recCount =0;		ErrMsg(NULL,"alloc readok data memory failed!");		return FALSE;	}	return TRUE;}/*int UDP_Recv_File(LPSTR lpTmp,int len){    RECV_FILE_FRAME RecvFileFrame;    char temp[80],tmp[80],*ptr,file[14];    HFILE hf;    OFSTRUCT os;        if(len<sizeof(RECV_FILE_FRAME))    {    	ErrMsg(NULL,"接收文件帧头长度不足");     	return FALSE;    }    memcpy(&RecvFileFrame,lpTmp,sizeof(RECV_FILE_FRAME));    lpTmp+=sizeof(RECV_FILE_FRAME);    len-=sizeof(RECV_FILE_FRAME);    if(len!=RecvFileFrame.filelen)    {    	ErrMsg(NULL,"接收文件数据区长度不足");     	return FALSE;        }        memset(file,0,14);    strncpy(file,RecvFileFrame.filename,12);    file[12] =0;    strcpy(tmp,file);    ptr=strchr(tmp,'.');    if(ptr!=NULL)    	*ptr=0;	wsprintf(temp, "%s\\%s.tmp",szDataPath,tmp);    if(RecvFileFrame.sign=='B'||RecvFileFrame.sign=='e'||    		RecvFileFrame.sign=='f')		unlink(temp);			if(access(temp,0)==0)		hf =OpenFile(temp, &os, OF_SHARE_DENY_NONE|OF_WRITE);	else		hf =OpenFile(temp, &os, OF_CREATE|OF_SHARE_DENY_NONE|OF_WRITE);	if(hf==HFILE_ERROR)	{		sprintf(tmp,"不能建立接收文件:%s",temp);    	ErrMsg(NULL,tmp);     	return FALSE;		}			if(_lseek(hf,0L,SEEK_END)==-1)	{    	ErrMsg(NULL,"接收文件不能定位到尾部!");    	return FALSE;		}	if(_lwrite(hf,lpTmp,len)!=(UINT)len)	{    	ErrMsg(NULL,"接收文件不能正确写入数据!");	    	return FALSE;			}		_lclose(hf);	if(RecvFileFrame.sign=='E'||RecvFileFrame.sign=='e')	{			sprintf(tmp,"%s\\%s",szDataPath,file);		unlink(tmp);		rename(temp,tmp);				_strlwr(tmp);		if(strstr(tmp,"szhq.dat")!=NULL)			PostMessage(ghWndMain,WM_USER +5,0,0L);		if(strstr(tmp,"shhq.dat")!=NULL)			PostMessage(ghWndMain,WM_USER +6,0,0L);			}		if(RecvFileFrame.sign=='F'||RecvFileFrame.sign=='f')	{			sprintf(tmp,"%s\\%s",szDataPath,file);		unlink(tmp);		ExpandFile(temp,tmp);		unlink(temp);				_strlwr(tmp);		if(strstr(tmp,"szhq.dat")!=NULL)			PostMessage(ghWndMain,WM_USER +5,0,0L);		if(strstr(tmp,"shhq.dat")!=NULL)			PostMessage(ghWndMain,WM_USER +6,0,0L);				}			return TRUE;}*/int UDP_Recv_File(LPSTR lpTmp,int len){    RECV_FILE_FRAME RecvFileFrame;    char temp[80],tmp[80],*ptr,file[14];        char buf[4096];    int bytes;    gzFile in;           HFILE hf;    OFSTRUCT os;        if(len<sizeof(RECV_FILE_FRAME))    {    	ErrMsg(NULL,"接收文件帧头长度不足");     	return FALSE;    }    memcpy(&RecvFileFrame,lpTmp,sizeof(RECV_FILE_FRAME));    lpTmp+=sizeof(RECV_FILE_FRAME);    len-=sizeof(RECV_FILE_FRAME);    if(len!=RecvFileFrame.filelen)    {    	ErrMsg(NULL,"接收文件数据区长度不足");     	return FALSE;        }        memset(file,0,14);    strncpy(file,RecvFileFrame.filename,12);    file[12] =0;    if(RecvFileFrame.sign<=GZ_OVER)    {       	wsprintf(temp, "%s\\temp.tmp",szDataPath);    	    	switch(RecvFileFrame.sign)    	{    		case GZ_STAR:    			hf =OpenFile(temp, &os, OF_CREATE|OF_SHARE_DENY_NONE|OF_WRITE);    		break;    		case GZ_SING:    		    hf =OpenFile(temp, &os, OF_CREATE|OF_SHARE_DENY_NONE|OF_WRITE);    		break;     		case GZ_CONT:    			hf =OpenFile(temp, &os, OF_SHARE_DENY_NONE|OF_WRITE);    		    		break;    		case GZ_OVER:    			hf =OpenFile(temp, &os, OF_SHARE_DENY_NONE|OF_WRITE);    		    		break;    	}		if(hf==HFILE_ERROR)		{			sprintf(tmp,"不能建立接收文件:%s",temp);    		ErrMsg(NULL,tmp);     		return FALSE;			}    	_lseek(hf,0L,SEEK_END);		if(_lwrite(hf,lpTmp,len)!=(UINT)len)		{    		ErrMsg(NULL,"接收文件不能正确写入数据!");	    		return FALSE;				}	    	_lclose(hf);    	if(RecvFileFrame.sign ==GZ_SING ||RecvFileFrame.sign ==GZ_OVER)    	{    		    	     in = gzopen(temp, "rb");    	     if(in ==NULL)    	     {    	        ErrMsg(NULL,"不能打开压缩文件!");	    			return FALSE;    	     }                	         	     _strlwr(file);    	     if(strstr(file,"winpy.dat")!=NULL)    	     	strcpy(tmp,file);    	     else    	     wsprintf(tmp, "%s\\%s",szDataPath,file);    	         	         	     hf =OpenFile(tmp, &os, OF_CREATE|OF_SHARE_DENY_NONE|OF_WRITE);    		 for (;;)     		 {        		bytes = gzread(in, buf, sizeof(buf));        		if (bytes < 0)        		{    				ErrMsg(NULL,"不能解压数据文件!");	    				break;        		}        		if (bytes == 0) break;				if(_lwrite(hf,buf,bytes)!=(UINT)bytes)				{    				ErrMsg(NULL,"解压数据不能正确写入文件!");	    				break;				}	    		 }    		     		 _lclose(hf);    		 if (gzclose(in) != Z_OK)    		 {    			ErrMsg(NULL,"压缩文件不能正常关闭!");	    			return FALSE;    		     		 }    		 			if(strstr(tmp,"szhq.dat")!=NULL)				PostMessage(ghWndMain,WM_USER +5,0,0L);			else if(strstr(tmp,"shhq.dat")!=NULL)				PostMessage(ghWndMain,WM_USER +6,0,0L);			else if(strstr(tmp,"winpy.dat")!=NULL)				PostMessage(ghWndMain,WM_USER +7,0,0L);			else			{				sprintf(tmp,"接收文件%s",file);				Msg(tmp,MSG_VERT);				}	    	}    	return 0;    }    strcpy(tmp,file);    ptr=strchr(tmp,'.');    if(ptr!=NULL)    	*ptr=0;	wsprintf(temp, "%s\\%s.tmp",szDataPath,tmp);    if(RecvFileFrame.sign=='B'||RecvFileFrame.sign=='e'||    		RecvFileFrame.sign=='f')		unlink(temp);			if(access(temp,0)==0)		hf =OpenFile(temp, &os, OF_SHARE_DENY_NONE|OF_WRITE);	else		hf =OpenFile(temp, &os, OF_CREATE|OF_SHARE_DENY_NONE|OF_WRITE);	if(hf==HFILE_ERROR)	{		sprintf(tmp,"不能建立接收文件:%s",temp);    	ErrMsg(NULL,tmp);     	return FALSE;		}			if(_lseek(hf,0L,SEEK_END)==-1)	{    	ErrMsg(NULL,"接收文件不能定位到尾部!");    	return FALSE;		}	if(_lwrite(hf,lpTmp,len)!=(UINT)len)	{    	ErrMsg(NULL,"接收文件不能正确写入数据!");	    	return FALSE;			}		_lclose(hf);	if(RecvFileFrame.sign=='E'||RecvFileFrame.sign=='e')	{			sprintf(tmp,"%s\\%s",szDataPath,file);		unlink(tmp);		rename(temp,tmp);				_strlwr(tmp);				if(strstr(tmp,"szhq.dat")!=NULL)			PostMessage(ghWndMain,WM_USER +5,0,0L);		if(strstr(tmp,"shhq.dat")!=NULL)			PostMessage(ghWndMain,WM_USER +6,0,0L);			}		if(RecvFileFrame.sign=='F'||RecvFileFrame.sign=='f')	{			sprintf(tmp,"%s\\%s",szDataPath,file);		unlink(tmp);		ExpandFile(temp,tmp);		unlink(temp);				_strlwr(tmp);				if(strstr(tmp,"szhq.dat")!=NULL)			PostMessage(ghWndMain,WM_USER +5,0,0L);		if(strstr(tmp,"shhq.dat")!=NULL)			PostMessage(ghWndMain,WM_USER +6,0,0L);			}		return TRUE;}

⌨️ 快捷键说明

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