📄 vtdlul.cc
字号:
#include <vtdlul.h>CvtCom::CvtCom (){}int CvtCom::Setup (PCComDataArray &Pvapcd, char* PpchHost){ int iError = 0; vapcd = Pvapcd; strcpy(hostp,PpchHost); strcpy(portp,"80"); return iError;}voidCvtCom::Execute (){ int iComDataID = 0; int iComDataIDMAX = vapcd.size() -1; while (1) { for (iComDataID = 0; iComDataID <= iComDataIDMAX; iComDataID++) { pcdbuf = vapcd[iComDataID]; if (pcdbuf->ibSendDataStatus == 1) { sock = socket(AF_INET, SOCK_STREAM, 0); soin.sin_family = AF_INET; soin.sin_addr.s_addr = inet_addr(hostp); soin.sin_port = htons(atoi(portp)); connect(sock, (struct sockaddr *)&soin, sizeof(soin)); write(sock, pcdbuf->chSendData, pcdbuf->iSendDataSize); iSize = read(sock, chBuf, sizeof(chBuf)); chBuf[iSize] = '\0'; close(sock); (pcdbuf->vmComDataMutex).Lock(); strncpy(pcdbuf->strShowInfo,chBuf,iSize); pcdbuf->strShowInfo[iSize] = '\0'; (pcdbuf->vmComDataMutex).Release(); pcdbuf->ibSendDataStatus = 0; } usleep(10); } }}//**************************************************************************************************************************************CvtDlUl::CvtDlUl (){ pvtCom = new CvtCom; strcpy(strDlUlStatus," ");}CvtDlUl::~CvtDlUl (){ int iComDataID; int iComDataIDMAX = vapcd.size() -1; for (iComDataID = 0; iComDataID <= iComDataIDMAX; iComDataID++) { pcdbuf = vapcd[iComDataID]; delete pcdbuf; }}voidCvtDlUl::Setup (char *strPLocalDir, char *strPRemoteDir, CVAAString *PpvaastrSendFileName){ strcpy(strLocalDir,strPLocalDir); strcpy(strRemoteDir,strPRemoteDir); pvaastrSendFileName = PpvaastrSendFileName; vastrRecvPath.resize(12); vastrRecvPath[0] = "/public/cd01"; vastrRecvPath[1] = "/public/cd02"; vastrRecvPath[2] = "/public/cd03"; vastrRecvPath[3] = "/public/cd04"; vastrRecvPath[4] = "/public/cd05"; vastrRecvPath[5] = "/public/cd06"; vastrRecvPath[6] = "/public/cd07"; vastrRecvPath[7] = "/public/cd08"; vastrRecvPath[8] = "/public/cd09"; vastrRecvPath[9] = "/public/cd10"; strcpy(strboundary,"######=========0123456789ABCDEFH=======######");}char* CvtDlUl::ShowInfo(){ (pcdbuf->vmComDataMutex).Lock(); strcpy(strShowInfo,pcdbuf->strShowInfo); (pcdbuf->vmComDataMutex).Release(); return strShowInfo;}voidCvtDlUl::Execute (){ int i,iChID, iChIDMax; iChIDMax = pvaastrSendFileName->size(); vapcd.resize(iChIDMax+1); for (iChID = 0; iChID <= iChIDMax; iChID++) { vapcd[iChID] = new CComData; pcdbuf = vapcd[iChID]; pcdbuf->ibSendDataStatus = 0; pcdbuf->iups = 0; pcdbuf->iComDataFileID = 0; pcdbuf->iChStatus = 0; } for (iChID = 1; iChID <= iChIDMax; iChID++) { pcdbuf = vapcd[iChID]; if ((*pvaastrSendFileName)[iChID-1].size() > 0) { strcpy(strLocalFilePath,(char*)((*pvaastrSendFileName)[iChID-1][pcdbuf->iComDataFileID])); (pcdbuf->ifUpload).open(strLocalFilePath,ios::in|ios::binary|ios::nocreate); pcdbuf->iChStatus = 1; strcpy(strtmp,(char*)((*pvaastrSendFileName)[iChID-1][pcdbuf->iComDataFileID])); for (i = strlen(strtmp)-1; i >= 0; i --) { if (strtmp[i] == '/') { strcpy(strRemoteFileName,&strtmp[i+1]); break; } } //sprintf(strtmp,"chidx=%s&chid=%d",strRemoteFileName,iChID); sprintf(strtmp,"%16d%s",iChID,strRemoteFileName); istrlens = strlen(strtmp); sprintf(chbuffer,"POST /perl/chidx.cgi HTTP/1.1\r\nHost: 127.0.0.1\r\nContent-Length: %d\r\n\r\n%s",istrlens,strtmp); ibuflens = strlen(chbuffer); memmove(pcdbuf->chSendData,chbuffer, ibuflens); pcdbuf->iSendDataSize = ibuflens; pcdbuf->ibSendDataStatus = 1; } } pvtCom->Setup(vapcd,"127.0.0.1"); pvtCom->Start(); while (1) { for (iChID = 1; iChID <= iChIDMax; iChID++) { pcdbuf = vapcd[iChID]; if ( (pcdbuf->ibSendDataStatus == 0) && (pcdbuf->ifUpload).good() && pcdbuf->iChStatus ) { (pcdbuf->ifUpload).read(strfibuf,10000); icounts = (pcdbuf->ifUpload).gcount(); if ((pcdbuf->ifUpload).good()) strcpy(strinfo,"-->"); else strcpy(strinfo,"END"); (pcdbuf->iups)++; strcpy(strRemoteFilePath,(char*)vastrRecvPath[iChID-1]); strcat(strRemoteFilePath,"/"); strcpy(strtmp,(char*)((*pvaastrSendFileName)[iChID-1][pcdbuf->iComDataFileID])); for (i = strlen(strtmp)-1; i >= 0; i --) { if (strtmp[i] == '/') { strcat(strRemoteFilePath,&strtmp[i+1]); break; } } //sprintf(strPackInfo,"%s:%d:%s",strRemoteFilePath,pcdbuf->iups,strinfo); sprintf(chbuffer,"POST /perl/uldl.cgi HTTP/1.1\r\nHost: 127.0.0.1\r\nContent-Length: %d\r\n\r\n",icounts+16+16+16+16); istrlens = strlen(chbuffer); sprintf(strtmp,"%16d%16d%16d%16d",iChID,pcdbuf->iPackInfo,pcdbuf->iComDataFileID,pcdbuf->iups); memmove(&chbuffer[istrlens],strtmp,16+16+16+16); istrlens = istrlens + 16 + 16 + 16 + 16; memmove(&chbuffer[istrlens],strfibuf,icounts); ibuflens = istrlens + icounts; memmove(pcdbuf->chSendData,chbuffer, ibuflens); pcdbuf->iSendDataSize = ibuflens; pcdbuf->ibSendDataStatus = 1; if ((pcdbuf->ifUpload).good()==0) { pcdbuf->iComDataFileID++; if (pcdbuf->iComDataFileID < (*pvaastrSendFileName)[iChID-1].size()) { (pcdbuf->ifUpload).close(); while (1) { usleep(10000); if (pcdbuf->ibSendDataStatus == 0) break; } strcpy(strLocalFilePath,(char*)((*pvaastrSendFileName)[iChID-1][pcdbuf->iComDataFileID])); strcpy(strtmp,(char*)((*pvaastrSendFileName)[iChID-1][pcdbuf->iComDataFileID])); for (i = strlen(strtmp)-1; i >= 0; i --) { if (strtmp[i] == '/') { strcpy(strRemoteFileName,&strtmp[i+1]); break; } } //sprintf(strtmp,"chidx=%s&chid=%d",strRemoteFileName,iChID); sprintf(strtmp,"%16d%s",iChID,strRemoteFileName); istrlens = strlen(strtmp); sprintf(chbuffer,"POST /perl/chidx.cgi HTTP/1.1\r\nHost: 127.0.0.1\r\nContent-Length: %d\r\n\r\n%s",istrlens,strtmp); ibuflens = strlen(chbuffer); memmove(pcdbuf->chSendData,chbuffer, ibuflens); pcdbuf->iSendDataSize = ibuflens; pcdbuf->ibSendDataStatus = 1; (pcdbuf->ifUpload).open(strLocalFilePath,ios::in|ios::binary|ios::nocreate); pcdbuf->iChStatus = 1; pcdbuf->iups = 0; } else { (pcdbuf->ifUpload).close(); pcdbuf->iComDataFileID = 0; pcdbuf->iChStatus = 0; pcdbuf->iups = 0; } } } usleep(10); } }}// do not remove this mark: #!#// end of file:vtdlul.cc
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -