📄 sv_jy.c
字号:
strcpy(SendBuff, JY_CANCEL_HEAD); len =strlen(SendBuff); *(short *)&SendBuff[len] =lpJyDest->jyNum; len +=sizeof(short); memcpy(&SendBuff[len], &AnsCancel, sizeof(AnsCancel)); len +=sizeof(AnsCancel); UDP_SendBuff("撤消委托", lpJyDest->sd, SendBuff, len,NULL); lpJyDest->isReqEnd =TRUE; ClearReq(lpJyDest); return 0;} int JyDest_Yecx(LPJY_DEST lpJyDest){ char temp[40],tmp[40]; JY_ANS_YECX AnsYecx; int ret, i,retnum; char stat; HFILE hFile; OFSTRUCT os; HANDLE hd; ReadRecord(AnsFile.hf[lpJyDest->zqsid],lpJyDest->recNum, hlen,rlen,CommBuffer); stat=CommBuffer[*(short*)(CommFile.fldStruct[fld_STAT].offset)]; if(stat !=';') return 0; FldToString(CommBuffer,&CommFile.fldStruct[fld_SERI],temp); if(lpJyDest->jyNum!=atoi(temp)) return 0; ret=CommBuffer[*(short*)(CommFile.fldStruct[fld_ANSNO].offset)]; if(ret==' ') return 0; FldToString(CommBuffer,&CommFile.fldStruct[fld_JYMM],temp); memset(tmp,' ',(short)CommFile.fldStruct[fld_JYMM].wid); if(ret==ANS_SUCC&&strncmp(temp,tmp,(short)CommFile.fldStruct[fld_JYMM].wid)==0) return 0; retnum=atoi(temp); if(ret==ANS_SUCC&&retnum>0) { wsprintf(tmp,"%s%d%s",AnsFile.path[lpJyDest->zqsid],lpJyDest->recNum,".ANS"); hFile =OpenFile(tmp, &os, OF_SHARE_DENY_NONE|OF_READ); if(hFile ==HFILE_ERROR) return 0; i=_llseek(hFile, 0L, FILE_END); if(i==HFILE_ERROR) { _lclose(hFile); return 0; } if((i)/(rlen+1)<retnum) { _lclose(hFile); return 0; } _llseek(hFile, 0L, FILE_BEGIN); } if(ret==ANS_SUCC) { FldToString(CommBuffer,&CommFile.fldStruct[fld_WTJG],temp); AnsYecx.kys=atof(temp); FldToString(CommBuffer,&CommFile.fldStruct[fld_WTGS],temp); AnsYecx.zjye=atof(temp); if(retnum>0) { //AnsYecx.lpGptg=(LPJY_GPTG)malloc(sizeof(JY_GPTG)*retnum); hd =GlobalAlloc(GHND,sizeof(JY_GPTG)*retnum); AnsYecx.lpGptg=GlobalLock(hd); memset(&AnsYecx.lpGptg[0],0,sizeof(JY_GPTG)*retnum); } for(i=0;i<retnum;i++) { memset(CommBuffer,0,sizeof(CommBuffer)); if((short)_lread(hFile,&CommBuffer[1],rlen -1)!=rlen -1) break; FldToString(CommBuffer,&CommFile.fldStruct[fld_GPDM], &AnsYecx.lpGptg[i].gpdm[0]); FldToString(CommBuffer,&CommFile.fldStruct[fld_WTGS], &AnsYecx.lpGptg[i].kys[0]); FldToString(CommBuffer,&CommFile.fldStruct[fld_WTJG], &AnsYecx.lpGptg[i].gpye[0]); FldToString(CommBuffer,&CommFile.fldStruct[fld_DATE], &AnsYecx.lpGptg[i].ghrq[0]); _llseek(hFile, 2L, FILE_CURRENT); } if(retnum>0) { _lclose(hFile); remove(tmp); } AnsYecx.recnum=retnum; AnsYecx.flag=ret; if(AnsYecx.recnum >=0) { lpJyDest->isSending =TRUE; Thrd_SendJycx(REQ_YECX, lpJyDest->sd, &AnsYecx, lpJyDest->jyNum); if(retnum>0) { //free(AnsYecx.lpGptg); GlobalUnlock(hd); GlobalFree(hd); } lpJyDest->isSending =FALSE; } } else { lpJyDest->isReqEnd =TRUE; ClearReq(lpJyDest); return ret; } lpJyDest->isReqEnd =TRUE; ClearReq(lpJyDest); return 0;} int JyDest_Cjcx(LPJY_DEST lpJyDest){ JY_ANS_CJCX AnsCjcx; int i, ret,retnum; char stat, temp[40],tmp[40]; HFILE hFile; OFSTRUCT os; HANDLE hd; ReadRecord(AnsFile.hf[lpJyDest->zqsid],lpJyDest->recNum, hlen,rlen,CommBuffer); stat=CommBuffer[*(short*)(CommFile.fldStruct[fld_STAT].offset)]; if(stat !=';') return 0; FldToString(CommBuffer,&CommFile.fldStruct[fld_SERI],temp); if(lpJyDest->jyNum!=atoi(temp)) return 0; ret=CommBuffer[*(short*)(CommFile.fldStruct[fld_ANSNO].offset)]; if(ret==' ') return 0; FldToString(CommBuffer,&CommFile.fldStruct[fld_JYMM],temp); memset(tmp,' ',(short)CommFile.fldStruct[fld_JYMM].wid); if(ret==ANS_SUCC&&strncmp(temp,tmp,(short)CommFile.fldStruct[fld_JYMM].wid)==0) return 0; retnum=atoi(temp); if(ret==ANS_SUCC&&retnum>0) { wsprintf(tmp,"%s%d%s",AnsFile.path[lpJyDest->zqsid],lpJyDest->recNum,".ANS"); hFile =OpenFile(tmp, &os, OF_SHARE_DENY_NONE|OF_READ); if(hFile ==HFILE_ERROR) return 0; i=_llseek(hFile, 0L, FILE_END); if(i==HFILE_ERROR) { _lclose(hFile); return 0; } if((i)/(rlen+1)<retnum) { _lclose(hFile); return 0; } _llseek(hFile, 0L, FILE_BEGIN); } if(ret==ANS_SUCC) { if(retnum>0) { //AnsCjcx.lpCj=(LPJY_CJ)malloc(sizeof(JY_CJ)*retnum); hd =GlobalAlloc(GHND,sizeof(JY_CJ)*retnum); AnsCjcx.lpCj=GlobalLock(hd); memset(&AnsCjcx.lpCj[0],0,sizeof(JY_CJ)*retnum); } for(i=0;i<retnum;i++) { memset(CommBuffer,0,sizeof(CommBuffer)); if((short)_lread(hFile,&CommBuffer[1],rlen -1)!=rlen -1) break; FldToString(CommBuffer,&CommFile.fldStruct[fld_HTHM], &AnsCjcx.lpCj[i].hthm[0]); FldToString(CommBuffer,&CommFile.fldStruct[fld_DATE], &AnsCjcx.lpCj[i].cjsj[0]); AnsCjcx.lpCj[i].mmbz= CommBuffer[*(short*)(CommFile.fldStruct[fld_ANSNO].offset)]; FldToString(CommBuffer,&CommFile.fldStruct[fld_GPDM], &AnsCjcx.lpCj[i].gpdm[0]); FldToString(CommBuffer,&CommFile.fldStruct[fld_WTGS], &AnsCjcx.lpCj[i].cjgs[0]); FldToString(CommBuffer,&CommFile.fldStruct[fld_WTJG], &AnsCjcx.lpCj[i].cjjg[0]); _llseek(hFile, 2L, FILE_CURRENT); } if(retnum>0) { _lclose(hFile); remove(tmp); } AnsCjcx.recnum=retnum; AnsCjcx.flag =ret; if(AnsCjcx.recnum >=0) { lpJyDest->isSending =TRUE; Thrd_SendJycx(REQ_CJCX, lpJyDest->sd, &AnsCjcx, lpJyDest->jyNum); if(retnum>0) { //free(AnsCjcx.lpCj); GlobalUnlock(hd); GlobalFree(hd); } lpJyDest->isSending =FALSE; } } else { lpJyDest->isReqEnd =TRUE; ClearReq(lpJyDest); return ret; } lpJyDest->isReqEnd =TRUE; ClearReq(lpJyDest); return 0;}int JyDest_Wtcx(LPJY_DEST lpJyDest){ JY_ANS_WTCX AnsWtcx; int ret, i,retnum; char stat, temp[40],tmp[40]; HFILE hFile; OFSTRUCT os; HANDLE hd; ReadRecord(AnsFile.hf[lpJyDest->zqsid],lpJyDest->recNum, hlen,rlen,CommBuffer); stat=CommBuffer[*(short*)(CommFile.fldStruct[fld_STAT].offset)]; if(stat !=';') return 0; FldToString(CommBuffer,&CommFile.fldStruct[fld_SERI],temp); if(lpJyDest->jyNum!=atoi(temp)) return 0; ret=CommBuffer[*(short*)(CommFile.fldStruct[fld_ANSNO].offset)]; if(ret==' ') return 0; FldToString(CommBuffer,&CommFile.fldStruct[fld_JYMM],temp); memset(tmp,' ',(short)CommFile.fldStruct[fld_JYMM].wid); if(ret==ANS_SUCC&&strncmp(temp,tmp,(short)CommFile.fldStruct[fld_JYMM].wid)==0) return 0; retnum=atoi(temp); if(ret==ANS_SUCC&&retnum>0) { wsprintf(temp,"%s%d%s",AnsFile.path[lpJyDest->zqsid],lpJyDest->recNum,".ANS"); hFile =OpenFile(temp, &os, OF_SHARE_DENY_NONE|OF_READ); if(hFile ==HFILE_ERROR) return 0; i=_llseek(hFile, 0L, FILE_END); if(i==HFILE_ERROR) { _lclose(hFile); return 0; } if((i)/(rlen+1)<retnum) { _lclose(hFile); return 0; } _llseek(hFile, 0L, FILE_BEGIN); } if(ret==ANS_SUCC) { if(retnum>0) { //AnsWtcx.lpWt=(LPJY_WT)malloc(sizeof(JY_WT)*retnum); hd =GlobalAlloc(GHND,sizeof(JY_WT)*retnum); AnsWtcx.lpWt =GlobalLock(hd); memset(&AnsWtcx.lpWt[0], 0, sizeof(JY_WT)*retnum); } for(i=0;i<retnum;i++) { memset(CommBuffer,0,sizeof(CommBuffer)); if((short)_lread(hFile,&CommBuffer[1],rlen -1)!=rlen -1) break; FldToString(CommBuffer,&CommFile.fldStruct[fld_HTHM], &AnsWtcx.lpWt[i].hthm[0]); FldToString(CommBuffer,&CommFile.fldStruct[fld_DATE], &AnsWtcx.lpWt[i].wtsj[0]); AnsWtcx.lpWt[i].mmbz= CommBuffer[*(short*)(CommFile.fldStruct[fld_ANSNO].offset)]; FldToString(CommBuffer,&CommFile.fldStruct[fld_GPDM], &AnsWtcx.lpWt[i].gpdm[0]); FldToString(CommBuffer,&CommFile.fldStruct[fld_WTGS], &AnsWtcx.lpWt[i].wtgs[0]); FldToString(CommBuffer,&CommFile.fldStruct[fld_WTJG], &AnsWtcx.lpWt[i].wtjg[0]); _llseek(hFile, 2L, FILE_CURRENT); } if(retnum>0) { _lclose(hFile); remove(tmp); } AnsWtcx.recnum=retnum; AnsWtcx.flag =ret; if(AnsWtcx.recnum >=0) { lpJyDest->isSending =TRUE; Thrd_SendJycx(REQ_WTCX, lpJyDest->sd, &AnsWtcx, lpJyDest->jyNum); if(AnsWtcx.recnum>0) { //free(AnsWtcx.lpWt); GlobalUnlock(hd); GlobalFree(hd); } lpJyDest->isSending =FALSE; } } else { lpJyDest->isReqEnd =TRUE; ClearReq(lpJyDest); return ret; } lpJyDest->isReqEnd =TRUE; ClearReq(lpJyDest); return 0;}int Thrd_SendJycx(int reqType, int sd, char *lpBuf, int jyNum){ char SendBuff[2048]; LPJY_ANS_YECX lpAnsYecx; LPJY_ANS_CJCX lpAnsCjcx; LPJY_ANS_WTCX lpAnsWtcx; int i, len, recCount, sendCount, sendNum; sendNum =0; sendCount =MAX_CX_SENDCOUNT; switch(reqType) { case REQ_YECX: lpAnsYecx =(LPJY_ANS_YECX)lpBuf; recCount =lpAnsYecx->recnum; for(i =0; i<=recCount/MAX_CX_SENDCOUNT; i++) { sendNum =i*MAX_CX_SENDCOUNT; if(sendNum+sendCount >recCount) sendCount =recCount-sendNum; strcpy(SendBuff, JY_YECX_HEAD); len =strlen(SendBuff); *(short *)&SendBuff[len] =jyNum; len +=sizeof(short); lpAnsYecx->recnum=sendCount; memcpy(&SendBuff[len],lpAnsYecx,sizeof(JY_ANS_YECX)-sizeof(LPJY_GPTG)); len+=sizeof(JY_ANS_YECX)-sizeof(LPJY_GPTG); if(sendCount==0&&sendNum!=0) break; if(sendCount>0) { memcpy(&SendBuff[len], &lpAnsYecx->lpGptg[sendNum], sizeof(JY_GPTG)*sendCount); len +=sizeof(JY_GPTG)*sendCount; } if(UDP_SendBuff("余额查询", sd, SendBuff, len,NULL)<0) return -1; } break; case REQ_CJCX: lpAnsCjcx =(LPJY_ANS_CJCX)lpBuf; recCount =lpAnsCjcx->recnum; sendCount =MAX_CX_SENDCOUNT; for(i =0; i<=recCount/MAX_CX_SENDCOUNT; i++) { sendNum =i*MAX_CX_SENDCOUNT; if(sendNum+sendCount >recCount) sendCount =recCount-sendNum; strcpy(SendBuff, JY_CJCX_HEAD); len =strlen(SendBuff); *(short *)&SendBuff[len] =jyNum; len +=sizeof(short); lpAnsCjcx->recnum=sendCount; memcpy(&SendBuff[len],lpAnsCjcx,sizeof(JY_ANS_CJCX)-sizeof(LPJY_CJ)); len+=sizeof(JY_ANS_CJCX)-sizeof(LPJY_CJ); if(sendCount==0&&sendNum!=0) break; if(sendCount>0) { memcpy(&SendBuff[len], &lpAnsCjcx->lpCj[sendNum], sizeof(JY_CJ)*sendCount); len +=sizeof(JY_CJ)*sendCount; } if(UDP_SendBuff("成交查询", sd, SendBuff, len,NULL)<0) return -1; } break; case REQ_WTCX: lpAnsWtcx =(LPJY_ANS_WTCX)lpBuf; recCount =lpAnsWtcx->recnum; sendCount =MAX_CX_SENDCOUNT; for(i =0; i<=recCount/MAX_CX_SENDCOUNT; i++) { sendNum =i*MAX_CX_SENDCOUNT; if(sendNum+sendCount >recCount) sendCount =recCount-sendNum; strcpy(SendBuff, JY_WTCX_HEAD); len =strlen(SendBuff); *(short *)&SendBuff[len] =jyNum; len +=sizeof(short); lpAnsWtcx->recnum=sendCount; memcpy(&SendBuff[len],lpAnsWtcx,sizeof(JY_ANS_WTCX)-sizeof(LPJY_WT)); len+=sizeof(JY_ANS_WTCX)-sizeof(LPJY_WT); if(sendCount>0) { memcpy(&SendBuff[len], &lpAnsWtcx->lpWt[sendNum], sizeof(JY_WT)*sendCount); len +=sizeof(JY_WT)*sendCount; } if(sendCount==0&&sendNum!=0) break; if(UDP_SendBuff("委托查询", sd, SendBuff, len,NULL)<0) return -1; } break; } strcpy(SendBuff, JY_CXEND_HEAD); len =strlen(SendBuff); UDP_SendBuff("查询成功", sd, SendBuff, len,NULL); return 0;}int Jy_SendRet(int sd, char reqType, char ret, int jyNum){ int len; BYTE SendBuff[100]; LPSTR lpHead; if(ret ==ANS_TIME_OUT) lpHead =JY_TIMEOUT_HEAD; else switch(reqType) { case REQ_CHKUSR: lpHead =JY_CHKUSR_HEAD; break; case REQ_CHGPWD: lpHead =JY_CHGPWD_HEAD; break; case REQ_BUYSEL: lpHead =JY_BUYSELL_HEAD; break; case REQ_CANCEL: lpHead =JY_CANCEL_HEAD; break; case REQ_YECX: lpHead =JY_YECX_HEAD; break; case REQ_CJCX: lpHead =JY_CJCX_HEAD; break; case REQ_WTCX: lpHead =JY_WTCX_HEAD; break; } strcpy(SendBuff, lpHead); len =strlen(SendBuff); *(short *)&SendBuff[len] =jyNum; len +=sizeof(short); SendBuff[len++] =(char)ret; UDP_SendBuff("发送结果", sd, SendBuff, len,NULL); return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -