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

📄 vtft.cc

📁 http协议下的文件传输程序
💻 CC
📖 第 1 页 / 共 2 页
字号:
#include <vtft.h>CvtFTC::CvtFTC ( ){}CvtFTC::~CvtFTC ( ){}int  CvtFTC::Setup (char*   PpstrHostName, char* PpstrCmd, char*  PpstrLocalPath,  char* PpstrRemotePath,  CVAString*  PpvastrLists){        strcpy(strHostName,PpstrHostName);        strcpy(strCmd,PpstrCmd);        strcpy(strLocalPath,PpstrLocalPath);        strcpy(strRemotePath,PpstrRemotePath);        pvastrLists = PpvastrLists;        psHostent = gethostbyname(strHostName);        //puchBuf = (guchar *)(psHostent->h_addr);        //sprintf(strHostAdd,"%u.%u.%u.%u",*puchBuf,*(puchBuf+1),*(puchBuf+2),*(puchBuf+3));        return 0;}int  CvtFTC::UploadSetup ( ){        char           strTmp[4096];        char           strPath[4096];        struct dirent   **namelist;        int        iListSize, iSize,iN, iLoop,iRow,iRows,iFln,iDln,iDidx;        long     liStrLen;        iListSize = pvastrLists->size();               iFln = 0;       iDln = 0;        for (iLoop = 0;  iLoop < iListSize; iLoop++)        {                strcpy(strTmp,(char*)(*pvastrLists)[iLoop]);                liStrLen = strlen(strTmp);                if (strTmp[liStrLen-1] != '/')                {                        vastrFileList.resize(iFln+1);                        vastrFileList[iFln] = (*pvastrLists)[iLoop];                         iFln++;                }                else                {                        vastrDirListBuf.resize(iDln+1);                        vastrDirList.resize(iDln+1);                        vastrDirListBuf[iDln] = strLocalPath;                        vastrDirListBuf[iDln] +=  "/";                        strTmp[liStrLen-1] = '\0';                        vastrDirListBuf[iDln] += strTmp;                         vastrDirList[iDln] = strTmp;                         iDln++;                }        }        iDidx = 0;while (1){       if (iDidx >= vastrDirListBuf.size() ) break;         iN = scandir((char*)vastrDirListBuf[iDidx], &namelist, 0, alphasort);        if (iN < 0)                perror("scandir");        else         {                for (iLoop = 0; iLoop < iN; iLoop++)                 {                       sprintf(strPath,"%s/%s",(char*)vastrDirListBuf[iDidx],namelist[iLoop]->d_name);                       stat(strPath, &mystat);                       vstrPath = vastrDirListBuf[iDidx];                       if (S_ISDIR(mystat.st_mode))                       {                               if (strcmp(namelist[iLoop]->d_name,".") && strcmp(namelist[iLoop]->d_name,".."))                               {                                       vastrDirListBuf.resize(iDln+1);                                       vastrDirList.resize(iDln+1);                                       vastrDirListBuf[iDln] = vstrPath;                                       vastrDirListBuf[iDln] += "/";                                       vastrDirListBuf[iDln] += namelist[iLoop]->d_name;                                        liStrLen = strlen(strLocalPath);                                       vastrDirList[iDln] = (char*)vastrDirListBuf[iDln] + liStrLen + 1;                                        iDln++;                              }                       }                       else                         {                               vastrFileList.resize(iFln+1);                               liStrLen = strlen(strLocalPath);                               vastrFileList[iFln] = (char*)vstrPath + liStrLen + 1;                               vastrFileList[iFln] += "/";                               vastrFileList[iFln] += namelist[iLoop]->d_name;                                iFln++;                       }              }              free(namelist);       }               iDidx++;}        return 0;}int  CvtFTC::DownloadSetup ( ){        char    strbuf00[1256];        char    strbuf01[1256];        char    strbuf02[1256];        char    strbuf03[1256];        int       istrstart;        int           iRow;        char       *pstrifdir;        char       *pstrdir;        int         iRows,iLoop;        int         ierror;        int        iListSize, iSize,iN,iFln,iDln,iDidx;        long     liStrLen;        iListSize = pvastrLists->size();               iFln = 0;       iDln = 0;        for (iLoop = 0;  iLoop < iListSize; iLoop++)        {                strcpy(strTmp,(char*)(*pvastrLists)[iLoop]);                liStrLen = strlen(strTmp);                if (strTmp[liStrLen-1] != '/')                {                        vastrFileList.resize(iFln+1);                        vastrFileList[iFln] = (*pvastrLists)[iLoop];                         iFln++;                }                else                {                        vastrDirListBuf.resize(iDln+1);                        vastrDirList.resize(iDln+1);                        vastrDirListBuf[iDln] = strRemotePath;                        if (strcmp(strRemotePath,"/") != 0) vastrDirListBuf[iDln] +=  "/";                        strTmp[liStrLen-1] = '\0';                        vastrDirListBuf[iDln] += strTmp;                         vastrDirList[iDln] = strTmp;                         iDln++;                }        }        iDidx = 0;while (1){       if (iDidx >= vastrDirListBuf.size() ) break;         vstrPath = vastrDirListBuf[iDidx];        puchBuf = (guchar *)(psHostent->h_addr);        sprintf(strHostAdd,"%u.%u.%u.%u",*puchBuf,*(puchBuf+1),*(puchBuf+2),*(puchBuf+3));        strcpy(strPort,"80");        iSock = socket(AF_INET, SOCK_STREAM, 0);        sSoin.sin_family = AF_INET;        sSoin.sin_addr.s_addr = inet_addr(strHostAdd);        sSoin.sin_port = htons(atoi(strPort));        ierror = connect(iSock, (struct sockaddr *)&sSoin, sizeof(sSoin));        int	iPackAttrib = 100;        sprintf(strTmp,"%8d%s:%s",iPackAttrib,"ls",(char*)vastrDirListBuf[iDidx]);        iStrlens=strlen(strTmp);        sprintf(chPostBuf,"POST /perl/fts.cgi HTTP/1.1\r\nHost: 127.0.0.1\r\nContent-Length: %d\r\n\r\n%s\r\n",iStrlens,strTmp);        write(iSock,  chPostBuf,strlen(chPostBuf));        ifstream      ifsock(iSock);        iRows = 0;        while (1)        {                ifsock.getline(strTmp,1024,'\n');                if (ifsock.good() == 0) break;                //int n = read(sock, buffer, sizeof(buffer));                strTmp[1024] = '\0';                iStrlens = strlen(strTmp);                for (iLoop =0;  iLoop < iStrlens; iLoop++)                {                        if (strTmp[iLoop] == ',')                        {                                strTmp[iLoop] = '\0';                                strcpy(strbuf00,strTmp);                                break;                        }                }                istrstart = iLoop+1;                for (iLoop = istrstart;  iLoop < iStrlens; iLoop++)                {                        if (strTmp[iLoop] == ',')                        {                                strTmp[iLoop] = '\0';                                strcpy(strbuf01,&strTmp[istrstart]);                                break;                        }                }                istrstart = iLoop+1;                for (iLoop = istrstart;  iLoop < iStrlens; iLoop++)                {                        if (strTmp[iLoop] == ',')                        {                                strTmp[iLoop] = '\0';                                strcpy(strbuf02,&strTmp[istrstart]);                                break;                        }                }                strcpy(strbuf03,&strTmp[iLoop + 1]);                                if (strcmp(strbuf00,"/") == 0)                {                               if (strcmp(strbuf01,".") && strcmp(strbuf01,".."))                               {                                       vastrDirListBuf.resize(iDln+1);                                       vastrDirList.resize(iDln+1);                                       vastrDirListBuf[iDln] = vstrPath;                                       if (strcmp((char*)vstrPath,"/") != 0) vastrDirListBuf[iDln] += "/";                                       vastrDirListBuf[iDln] += strbuf01;                                        liStrLen = strlen(strRemotePath);                                       vastrDirList[iDln] = (char*)vastrDirListBuf[iDln] + liStrLen;                                        iDln++;                              }                }                else                {                               vastrFileList.resize(iFln+1);                               liStrLen = strlen(strRemotePath);                               vastrFileList[iFln] = (char*)vstrPath + liStrLen;                               if (strcmp((char*)strRemotePath,"/") != 0) vastrFileList[iFln] = (char*)vstrPath + liStrLen + 1;                               if (strcmp((char*)vastrFileList[iFln],"/") != 0) vastrFileList[iFln] += "/";                               vastrFileList[iFln] += strbuf01;                                iFln++;                }        }        close(iSock);        iDidx++;}                for (iLoop = 0; iLoop < iDln; iLoop++)        {

⌨️ 快捷键说明

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