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

📄 vtdlul.cc

📁 http协议下的文件传输程序
💻 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 + -