www.pudn.com > inet_stock.zip > HQ_TCP.C
#include#include #include #include #include #include #include #include #include #include #include "appmain.h" #include "pctcp.h" #include "hq.h" #include "hq_cl.h" #include "hq_tcp.h" #include "caption.h" #include "msg.h" #include "fx.h" #include "lzw.h" #include "zlib.h" extern BOOL ErrMsg(HWND, LPSTR); extern HWND ghWndMain, ghWndHq, ghWndXlt, ghWndJlt, ghWndCj, ghWndLitHq, ghWndMmp, ghWndMaxMin, ghWndStatus, ghWndCaption; extern HWND ghDlgJy, ghDlgChkUsr, ghDlgChgPwd, ghDlgBuySell, ghDlgCancel, ghDlgYecx, ghDlgWtcx, ghDlgCjcx; extern BOOL run_cancelled; extern int sdHq, sdJy; extern char * ReadBuf; //[MAX_READ_BUF_SIZE+1]; extern char szDataPath[128]; extern BOOL IsZsRec(int, int); extern LPSTR GetError(LPSTR); extern HFILE hfZx; extern int FxInit(LPFX Fx); extern LPFX Fx; extern BOOL gfOnLine,gfConnecting; BOOL HqAllocMem(int); int date_num =-1; int GraRecalcJgMax(); int GraRecalcLcMax(); int MaxMinChangeHqData(int jys, int maxmin); int GraGetMinPos(void); void WriteMsg(LPSTR msg); int UDP_Read_GetZqmc(LPSTR lpTmp, int len); int UDP_Read_DataDay(LPSTR lpTmp, int len); int UDP_Read_ChkUsr(LPSTR lpTmp, int len); #define DATA_START_SIGN -16 extern char *IpSendBuffer,*IpCommitBuffer; extern unsigned int IpSendLen,IpCommitLen; void Ip_Commit_Pack(int len,char *buff) { IpCommitLen =len; memcpy(IpCommitBuffer,buff,len); } BOOL Ip_Send_Pack() { int x,k,this; char tmp[100]; if(IpCommitLen ==0) return TRUE; if(IpSendLen!=0) return TRUE; //if((x=check_socket_status(sdHq))!=0) // return TRUE; memcpy(IpSendBuffer,IpCommitBuffer,IpCommitLen); IpSendLen = IpCommitLen; IpCommitLen =0; for(k=0,x=0;k<1000;k++) { this = send(sdHq,IpSendBuffer, IpSendLen-x, 0); if (this == SOCKET_ERROR) { if ((this =h_errno) != WSAEWOULDBLOCK) { strcpy(tmp,"不能接收主机信息!"); ErrMsg(ghWndMain, GetError(tmp)); gfOnLine=FALSE; return FALSE; } } if(x+this!=(int)IpSendLen) x+=this; else break; } IpSendLen =0; return TRUE; } int UDP_Send_Hq(LPSTR lpString, LPSTR lpHead, int len) { char tmp2[MAX_WRITE_BUF_SIZE+1]; int x=0,tlen; if(!gfOnLine||gfConnecting) return 0; memset(&tmp2[0],0,sizeof(MAX_WRITE_BUF_SIZE)); tmp2[0]=DATA_START_SIGN; *(int *)&tmp2[1]=len; memcpy(&tmp2[1+sizeof(int)], lpString, len); tlen = 1+sizeof(int) + len; Ip_Commit_Pack(tlen, &tmp2[0]); return len; } extern FILE *fp; #define DATA_HEAD_SIZE 3 char dataHead[DATA_HEAD_SIZE+1]; int HeadPrt=0,dataPrt=0 ; int AnaRecvData(void) { int prt,len,try_times,dataNum,ret; char temp[MAX_READ_BUF_SIZE+1]; prt=len=try_times=dataNum=0; retry_read: if(try_times ++>MAX_UDP_TRY_TIMES) { ErrMsg(ghDlgJy, "recv error"); DrawTime(RED_SIGN); return -1; } DrawTime(GREEN_SIGN); memset((char *)&temp[0],0,MAX_READ_BUF_SIZE*sizeof(char)); len = recv(sdHq,(char *)&temp[0],MAX_READ_BUF_SIZE*sizeof(char),0); if (len == SOCKET_ERROR) { ret =h_errno; if (ret == WSAEWOULDBLOCK) goto retry_read; else if(ret ==WSAEINPROGRESS) return 0; else { ErrMsg(ghDlgJy, GetError("recv cancel error")); if(ConnectHost(0, -1)<0) { ErrMsg(ghDlgJy, "Reconnect failed"); DrawTime(RED_SIGN); return -1; } } } if(len <=0) { DrawTime(RED_SIGN); return -1; } if(len>4) { if(temp[0]==DATA_START_SIGN && HeadPrt!=0 &&temp[3]>='A' && temp[3]<='Z') { dataPrt=0; HeadPrt=0; } } while(prt =len) { //Data frame just include its start mark DrawTime(YELLOW_SIGN); return 0; } if(DATA_HEAD_SIZE - HeadPrt >len-prt) { //data frame not total head info memcpy((char*)&dataHead[HeadPrt],(char*)&temp[prt],len-prt); HeadPrt+=len-prt; DrawTime(YELLOW_SIGN); return 0; } else { memcpy((char*)&dataHead[HeadPrt],(char*)&temp[prt],DATA_HEAD_SIZE - HeadPrt); prt+=DATA_HEAD_SIZE - HeadPrt; HeadPrt=DATA_HEAD_SIZE; } } if(prt>=len) { //Just head info DrawTime(YELLOW_SIGN); return 0; } dataNum=*(int *)&dataHead[1]; if(dataNum<=0) { //Data Error,we must lose this bad data frame! DrawTime(RED_SIGN); return -1; } if(dataNum-dataPrt > len - prt) { //Not total data frame memcpy((char FAR *)&ReadBuf[dataPrt],(char*)&temp[prt],len-prt); dataPrt+=len-prt; DrawTime(YELLOW_SIGN); return 0; } else { memcpy((char FAR *)&ReadBuf[dataPrt],(char*)&temp[prt],dataNum-dataPrt); prt+=dataNum-dataPrt; dataPrt=dataNum; UDP_Client_ReadHq(); dataPrt=0; HeadPrt=0; dataNum=0; } if(prt>=len) { dataPrt=0; HeadPrt=0; dataNum=0; DrawTime(BLACK_SIGN); return 0; } } DrawTime(BLACK_SIGN); return 0; } int curPos =0, curLen =0;; int UDP_Client_ReadHq(void) { LPSTR lpTmp; int len; len=dataPrt; lpTmp =&ReadBuf[0]; if(!strnicmp(HQ00_HEAD, lpTmp, strlen(HQ00_HEAD))) UDP_Read_Hq00(lpTmp+strlen(HQ00_HEAD)+sizeof(short), len -strlen(HQ00_HEAD)-sizeof(short)); else if(!strnicmp(HQ01_HEAD, lpTmp, strlen(HQ01_HEAD))) UDP_Read_Hq01(lpTmp+strlen(HQ01_HEAD)+sizeof(short), len -strlen(HQ01_HEAD)-sizeof(short)); else if(!strnicmp(HQ10_HEAD, lpTmp, strlen(HQ10_HEAD))) UDP_Read_Hq10(lpTmp+strlen(HQ10_HEAD)+sizeof(short), len -strlen(HQ10_HEAD)-sizeof(short)); else if(!strnicmp(GRA00_HEAD, lpTmp, strlen(GRA00_HEAD))) UDP_Read_Gra00(lpTmp+strlen(GRA00_HEAD)+sizeof(short), len -strlen(GRA00_HEAD)-sizeof(short)); else if(!strnicmp(GRA01_HEAD, lpTmp, strlen(GRA01_HEAD))) UDP_Read_Gra01(lpTmp+strlen(GRA01_HEAD)+sizeof(short), len -strlen(GRA01_HEAD)-sizeof(short)); else if(!strnicmp(GRA10_HEAD, lpTmp, strlen(GRA10_HEAD))) UDP_Read_Gra10(lpTmp+strlen(GRA10_HEAD)+sizeof(short), len -strlen(GRA10_HEAD)-sizeof(short)); else if(!strnicmp(MMP_HEAD, lpTmp, strlen(MMP_HEAD))) UDP_Read_Mmp(lpTmp+strlen(MMP_HEAD)+sizeof(short), len -strlen(MMP_HEAD)-sizeof(short)); else if(!strnicmp(MAXMIN10_HEAD, lpTmp, strlen(MAXMIN10_HEAD))) UDP_Read_MaxMin10(lpTmp+strlen(MAXMIN10_HEAD)+sizeof(short), len -strlen(MAXMIN10_HEAD)-sizeof(short)); else if(!strnicmp(DP_HEAD, lpTmp, strlen(DP_HEAD))) UDP_Read_Dp(lpTmp+strlen(DP_HEAD)+sizeof(short), len -strlen(DP_HEAD)-sizeof(short)); else if(!strnicmp(ZX_HEAD, lpTmp, strlen(ZX_HEAD))) UDP_Read_Zx(lpTmp+strlen(ZX_HEAD)+sizeof(short), len -strlen(ZX_HEAD)-sizeof(short)); else if(!strnicmp(MSG_HEAD, lpTmp, strlen(MSG_HEAD))) MessageBox(NULL, lpTmp+strlen(MSG_HEAD)+sizeof(short),"主机信息", MB_OK); else if(!strnicmp(GETZQMC_HEAD, lpTmp, strlen(GETZQMC_HEAD))) UDP_Read_GetZqmc(lpTmp+strlen(GETZQMC_HEAD)+sizeof(short), len -strlen(GETZQMC_HEAD)-sizeof(short)); else if(!strnicmp(DATA_DAY_HEAD,lpTmp,strlen(DATA_DAY_HEAD))) UDP_Read_DataDay(lpTmp+strlen(DATA_DAY_HEAD)+sizeof(short),len -strlen(DATA_DAY_HEAD)-sizeof(short)); else if(!strnicmp(HQ_CHKUSR_HEAD, lpTmp, strlen(HQ_CHKUSR_HEAD))) UDP_Read_ChkUsr(lpTmp+strlen(HQ_CHKUSR_HEAD)+sizeof(short),len -strlen(HQ_CHKUSR_HEAD)-sizeof(short)); else if(!strnicmp(RECV_FILE_HEAD, lpTmp, strlen(RECV_FILE_HEAD))) UDP_Recv_File(lpTmp+strlen(RECV_FILE_HEAD),len-strlen(RECV_FILE_HEAD)); else if(!strnicmp(ERROR_HEAD, lpTmp, strlen(ERROR_HEAD))) MessageBeep(0); else { DrawTime(3); MessageBeep(0); } curPos =len-curLen; return 0; } int UDP_Read_NotRun(LPSTR lpTmp, int len) { HqTime[HqPaintData.jys].fRunning =FALSE; return 0; } extern int CheckTime(BOOL); int hq_state =-1, hq_jys =0, hq_rec_first =0, hq_rec_count =0; int UDP_Read_Hq00(LPSTR lpTmp, int len) { int i, j, jys; static int fFirst[2]; time_t ltime; //struct tm *ptm; //struct _dostime_t dtime; jys =*lpTmp; lpTmp +=1; len -=1; if(len <=0) goto readhq00Err; HqData[jys].recCount =*(short *)lpTmp; if(jys ==HqPaintData.jys) HqPaintData.recCount =HqData[jys].recCount; if(HqData[jys].recCount >MAX_HQ_REC_COUNT) goto readhq00Err; lpTmp +=sizeof(short); len -=sizeof(short); if(len 0) { memcpy(<ime, lpTmp, sizeof(time_t)); len -=sizeof(time_t); lpTmp +=sizeof(time_t); //ptm =gmtime(<ime); //dtime.hour =ptm->tm_hour; //dtime.minute =ptm->tm_min; //dtime.second =ptm->tm_sec; //_dos_settime(&dtime); date_num =*lpTmp; lpTmp ++; len --; } HqTime[jys].am_min_count -=HqTime[jys].am_min_start; HqTime[jys].pm_min_count -=HqTime[jys].pm_min_start; i =HqTime[0].am_min_count+HqTime[0].pm_min_count+2; j =HqTime[1].am_min_count+HqTime[1].pm_min_count+2; if(j>i) i =j; if(GraphData.lpMinPos ==NULL) GraphData.lpMinPos =(short *)GlobalAllocPtr(GHND, i*sizeof(short)); else GraphData.lpMinPos =(short *)GlobalReAllocPtr(GraphData.lpMinPos, i*sizeof(short), GMEM_MOVEABLE); if(GraphData.lpMinPos ==NULL) { GraphData.minEnd =0; ErrMsg(NULL,"alloc record data memory failed!"); return FALSE; } if(GraphData.lpMinLc ==NULL) GraphData.lpMinLc =(long *)GlobalAllocPtr(GHND, i*sizeof(long)); else GraphData.lpMinLc =(long *)GlobalReAllocPtr(GraphData.lpMinLc, i*sizeof(long), GHND); if(GraphData.lpMinLc ==NULL) { GraphData.minEnd =0; ErrMsg(NULL,"alloc record data memory failed!"); return FALSE; } if(!HqAllocMem(jys)) goto readhq00Err; if(HqPaintData.fldCount <=0) { HqPaintData.fldCount =HQ_FLDS_COUNT; for(i =0; i =HqData[jys].recCount) { ErrMsg(ghWndMain, "读HQ01错,读记录编号大于记录数!"); goto readhq01Err; } if(!isRefresh) { memcpy(&HqData[jys].lpPreData[recNum], lpTmp, sizeof(HQ_PRE_DATA)); len -=sizeof(HQ_PRE_DATA); lpTmp +=sizeof(HQ_PRE_DATA); } memcpy(&HqData[jys].lpRefData[recNum], lpTmp, sizeof(HQ_REF_DATA)); len -=sizeof(HQ_REF_DATA); lpTmp +=sizeof(HQ_REF_DATA); HqData[jys].isReadOK[recNum] =TRUE; } if(IsWindowVisible(ghWndHq)) SendMessage(ghWndHq, WM_HQ_REFRESH, jys, 0L); return 0; readhq01Err: DrawTime(3); MessageBeep(0); return -1; } int UDP_Read_Hq10(LPSTR lpTmp, int len) { int i, jys; int rec_count, rec_num; float oldjg; //long lc; jys =*lpTmp++; len --; if(jys >1) goto readhq10Err; rec_count =*(short *)lpTmp; lpTmp+=2; len -=2; if(rec_count >HqData[jys].recCount || rec_count <=0) goto readhq10Err; //if(rec_count >MAX_HQ_SENDCOUNT) goto readhq10Err; if(len HqData[jys].recCount) break; lpTmp+=sizeof(short); len -=sizeof(short); oldjg =HqData[jys].lpRefData[rec_num].zjjg; memcpy(&HqData[jys].lpRefData[rec_num], lpTmp, sizeof(HQ_REF_DATA)); HqData[jys].isJgChanged[rec_num] =(BOOL)((HqData[jys].lpRefData[rec_num].zjjg-oldjg)*100); if(HqData[jys].isJgChanged[rec_num]) MessageBeep(0); len -=sizeof(HQ_REF_DATA); lpTmp +=sizeof(HQ_REF_DATA); HqData[jys].isLcChanged[rec_num] =TRUE; } if(IsWindowVisible(ghWndHq)) SendMessage(ghWndHq, WM_HQ_REFRESH, jys, 0L); else if(IsWindowVisible(ghWndLitHq)) { SendMessage(ghWndLitHq, WM_READ_OK, jys, 0L); } return 0; readhq10Err: DrawTime(3); return -1; } //////////////////////////////////////////////////////////////////////////// //Function:This func receive deatial pricr voulmn file head information data // from server,then get memory according to minTotal data. // int UDP_Read_Gra00(LPSTR lpTmp, int len) { int jys; jys =*lpTmp; if(GraphData.jys !=jys) return 0; lpTmp +=1; len -=1; if(len <=0) return -1; memcpy(&GraphData.GraHead, lpTmp, sizeof(GRA_HEAD)); //GraphData.GraHead.zrsp =HqData[jys].lpPreData[GraphData.recNum].zrsp; if(GraphData.lpGraData ==NULL) GraphData.lpGraData =(GRA_DATA huge *)GlobalAllocPtr(GHND, (long)GraphData.GraHead.minTotal*sizeof(GRA_DATA)); else GraphData.lpGraData =(GRA_DATA huge *)GlobalReAllocPtr( GraphData.lpGraData,(long)GraphData.GraHead.minTotal*sizeof(GRA_DATA), GMEM_MOVEABLE); if(GraphData.lpGraData ==NULL) { ErrMsg(NULL, "不能分配成交明细数据内存!"); return -1; } GraRecalcJgMax(); GraRecalcLcMax(); return 0; } //////////////////////////////////////////////////////////////////////// //This func to get data info from server,then compute it // int UDP_Read_Gra01(LPSTR lpTmp, int len) { int min_num, min_count; char temp[128]; HFILE hf; OFSTRUCT os; if(GraphData.lpGraData ==NULL) return 0; if(*lpTmp++ !=GraphData.jys) return -1; len -=1; if(len <=0) return -1; if(*(int *)lpTmp !=GraphData.recNum) return -1; lpTmp +=sizeof(int); len -=sizeof(int); if(len <=0) return -1; min_count =*(int *)lpTmp; //data num this times lpTmp +=sizeof(int); len -=sizeof(int); if(len <=0) return -1; min_num =*(int *)lpTmp; //Last data tail lpTmp +=sizeof(int); len -=sizeof(int); if(len <=0) return -1; if(min_num +min_count >GraphData.GraHead.minTotal) return -1; min_count =len/sizeof(GRA_DATA); memcpy(&GraphData.lpGraData[min_num], lpTmp, min_count*sizeof(GRA_DATA)); //GraphData.GraHead.zrsp =HqData[GraphData.jys].lpPreData[GraphData.recNum].zrsp; GraphData.minEndPrev =min_num; GraphData.minEnd =min_num+min_count; GraphData.fRefreshDraw =TRUE; GraGetMinPos(); wsprintf(temp, "%s\\%s.dat", 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) { if(_lwrite(hf, &GraphData.GraHead, sizeof(GraphData.GraHead)) ==sizeof(GraphData.GraHead)) { if(_llseek(hf, (long)sizeof(GRA_HEAD) +(long)sizeof(GRA_DATA)*min_num, SEEK_SET) ==HFILE_ERROR) { _llseek(hf, sizeof(GRA_HEAD), SEEK_SET); _hwrite(hf, &GraphData.lpGraData[0], (long)sizeof(GRA_DATA)*min_num); } _hwrite(hf, &GraphData.lpGraData[min_num], (long)sizeof(GRA_DATA)*min_count); } _lclose(hf); } GraphData.fRefreshDraw =FALSE; if(IsWindowVisible(ghWndXlt)) { if(GraRecalcJgMax() ==0) SendMessage(ghWndXlt, WM_READ_OK, 1, 0L); else SendMessage(ghWndXlt, WM_READ_OK, 0, 0L); if(GraRecalcLcMax() ==0) InvalidateRect(ghWndJlt, NULL, TRUE); else InvalidateRect(ghWndJlt, NULL, FALSE); SendMessage(ghWndCj, WM_READ_OK, 0, 0L); } return 0; } int UDP_Read_Gra10(LPSTR lpTmp, int len) { int min_num, min_count; char temp[128]; HFILE hf; OFSTRUCT os; GRA_HEAD GraHead; if(GraphData.lpGraData ==NULL) return 0; if(*lpTmp++ !=GraphData.jys !=0) goto readgra10Err; len -=1; if(len <=0) goto readgra10Err; if(*(int *)lpTmp !=GraphData.recNum) goto readgra10Err; lpTmp+=sizeof(int); len-=sizeof(int); min_count =*(int *)lpTmp; lpTmp +=sizeof(int); len -=sizeof(int); if(len <=0) goto readgra10Err; min_num =*(int *)lpTmp; if(min_num !=GraphData.minEnd) { MessageBeep(0); //goto readgra10Err; } lpTmp +=sizeof(int); len -=sizeof(int); if(len <=0) goto readgra10Err; //memcpy(&GraHead, lpTmp, sizeof(GRA_HEAD)); //lpTmp +=sizeof(GRA_HEAD); //len -=sizeof(GRA_HEAD); min_count =len/sizeof(GRA_DATA); GraphData.lpGraData =(GRA_DATA huge *)GlobalReAllocPtr( GraphData.lpGraData, (long)(min_num+min_count)*sizeof(GRA_DATA), GMEM_MOVEABLE); if(GraphData.lpGraData ==NULL) { ErrMsg(NULL, "Gra10: alloc mem failed"); return -1; } memcpy(&GraphData.lpGraData[min_num], lpTmp, min_count*sizeof(GRA_DATA)); GraphData.minEndPrev =min_num; GraphData.GraHead.minTotal =GraphData.minEnd =min_num+min_count; GraphData.fRefreshDraw =TRUE; GraGetMinPos(); if(IsWindowVisible(ghWndXlt)) { if(GraRecalcJgMax() ==0) SendMessage(ghWndXlt, WM_READ_OK, 1, 0L); else SendMessage(ghWndXlt, WM_READ_OK, 0, 0L); if(GraRecalcLcMax() ==0) InvalidateRect(ghWndJlt, NULL, TRUE); else InvalidateRect(ghWndJlt, NULL, FALSE); InvalidateRect(ghWndCj, NULL, TRUE); } wsprintf(temp, "%s\\%s.dat", szDataPath, HqData[GraphData.jys].lpPreData[GraphData.recNum].zqdm); hf =OpenFile(temp, &os, OF_SHARE_DENY_NONE|OF_READ); if(hf !=HFILE_ERROR) { memcpy(&GraHead, &GraphData.GraHead, sizeof(GraHead)); GraHead.minTotal =GraphData.minEnd; if(_lwrite(hf, &GraHead, sizeof(GraHead)) ==sizeof(GraHead)) { if(_llseek(hf, (long)sizeof(GRA_HEAD) +(long)sizeof(GRA_DATA)*min_num, SEEK_SET) ==HFILE_ERROR) { _llseek(hf, sizeof(GRA_HEAD), SEEK_SET); _hwrite(hf, &GraphData.lpGraData[0], (long)sizeof(GRA_DATA)*min_num); } _hwrite(hf, &GraphData.lpGraData[min_num], (long)sizeof(GRA_DATA)*min_count); } _lclose(hf); } GraphData.fRefreshDraw =FALSE; if(IsWindowVisible(ghWndXlt)) { if(GraRecalcJgMax() ==0) SendMessage(ghWndXlt, WM_READ_OK, 1, 0L); else SendMessage(ghWndXlt, WM_READ_OK, 0, 0L); if(GraRecalcLcMax() ==0) InvalidateRect(ghWndJlt, NULL, TRUE); else InvalidateRect(ghWndJlt, NULL, FALSE); InvalidateRect(ghWndCj, NULL, TRUE); } return 0; readgra10Err: DrawTime(3); return -1; } int UDP_Read_Mmp(LPSTR lpTmp, int len) { int jys; jys =*lpTmp; lpTmp ++; len --; if(len <=0) goto readmmpErr; //if(*(int *)lpTmp !=rec_num) goto sendmmp; len -=sizeof(int); lpTmp +=sizeof(int); if(len !=sizeof(MMP_DATA)-2*sizeof(int)) goto readmmpErr; memcpy(&MmpData.jwBuy[0], lpTmp, sizeof(MMP_DATA)-2*sizeof(int)); InvalidateRect(ghWndMmp, NULL, TRUE); return 0; readmmpErr: DrawTime(3); return -1; } int UDP_Read_MaxMin10(LPSTR lpTmp, int len) { int jys, i, j, recCount; int maxmin; char WriteBuf[MAX_WRITE_BUF_SIZE+1]; jys =*lpTmp; if(jys !=GraphData.jys) return 0; lpTmp +=1; len -=1; maxmin =*lpTmp; if(maxmin >1) { MessageBeep(0); return -1; } lpTmp++; len --; if(len HqData[jys].recCount) return -1; strncpy(HqData[jys].lpPreData[recNum].zqmc, lpTmp, MAX_ZQMC_SIZE); lpTmp +=MAX_ZQMC_SIZE; } if(IsWindowVisible(ghWndMaxMin)) InvalidateRect(ghWndMaxMin, NULL, FALSE); return 0; } int UDP_Read_Dp(LPSTR lpTmp, int len) { int jys; if(len (float)1 || DpData[jys].npbl <(float)0) DpData[jys].npbl =(float)0.5; if(ghWndStatus) InvalidateRect(ghWndStatus, NULL, FALSE); return 0; readdpErr: DrawTime(3); return -1; } int UDP_Send_Zx(void) { int len; char WriteBuf[MAX_WRITE_BUF_SIZE+1]; strcpy(WriteBuf, ZX_HEAD); len =strlen(WriteBuf); *(long *)&WriteBuf[len] =ZxData.len; len +=sizeof(long); return UDP_Send_Hq(WriteBuf, ZX_HEAD, len); } int UDP_Send_Stock_Info(STOCK_INFO_FRAME *StockInfoFrame) { int len; char WriteBuf[MAX_WRITE_BUF_SIZE+1]; strcpy(WriteBuf,STOCK_INFO_HEAD); len=strlen(STOCK_INFO_HEAD); memcpy(&WriteBuf[len],StockInfoFrame,sizeof(STOCK_INFO_FRAME)); len+=sizeof(STOCK_INFO_FRAME); return UDP_Send_Hq(WriteBuf,STOCK_INFO_HEAD,len); } int UDP_Read_Zx(LPSTR lpTmp, int len) { char temp[80]; OFSTRUCT os; strcpy(temp, szDataPath); strcat(temp, "\\zx.txt"); hfZx =OpenFile(temp, &os, OF_SHARE_DENY_NONE|OF_READWRITE); if(hfZx ==HFILE_ERROR) return(-1); if(len <=0) { _lclose(hfZx); return(-1); } _llseek(hfZx, 0, SEEK_END); ZxData.len +=len; _lwrite(hfZx, lpTmp, len); _lclose(hfZx); SendMessage(ghWndCaption, WM_USER+1, 0, (LPARAM)(ZxData.len-len)); return 0; } int UDP_Send_Hq00(int jys, BOOL fFirst, int fRefresh, int fSel, int recCount, short *recList) { int i, len, rec_num, list_count; char WriteBuf[MAX_WRITE_BUF_SIZE+1]; //hq_state =0; //hq_jys =jys; KillTimer(ghWndHq, 5); SetTimer(ghWndHq, 5, 5000, NULL); strcpy(WriteBuf, HQ00_HEAD); len =strlen(HQ00_HEAD); WriteBuf[len++] =CLIENT_VERSION; WriteBuf[len++] =(BYTE)jys; if(HqData[jys].isReadOK ==NULL || HqData[jys].isReadOK[0] ==FALSE) fFirst =TRUE; WriteBuf[len++] =(BYTE)fFirst; WriteBuf[len++] =(BYTE)fRefresh; WriteBuf[len++] =(BYTE)fSel; *(short *)&WriteBuf[len] =recCount; len +=sizeof(short); if(!fSel) list_count =1; else list_count =recCount; memcpy(&WriteBuf[len], recList, sizeof(short)*list_count); len +=sizeof(short)*list_count; if(fRefresh) { for(i =0; i tim) { //i++; //tim=tim1; break; } lc +=GraphData.lpGraData[i].lc; i++; } if(i-1 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.lpGraData[GraphData.lpMinPos[i]].zjjg) min_val =GraphData.lpGraData[GraphData.lpMinPos[i]].zjjg; if(max_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 =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 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