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

📄 vtft.cc

📁 http协议下的文件传输程序
💻 CC
📖 第 1 页 / 共 2 页
字号:
                sprintf(strTmp,"%s/%s",strLocalPath,(char*)vastrDirList[iLoop]);                mkdir(strTmp, 0700);        }                 for (iLoop = 0; iLoop < iFln; iLoop++)        {                sprintf(strTmp,"%s/%s",strLocalPath,(char*)vastrFileList[iLoop]);        }                strcpy(strShowInfo,strTmp);        return 0;}char*  CvtFTC::ShowInfo ( ){        vmShowMutex.Lock();        strncpy(strShowBuf,strShowInfo,1024);        strShowBuf[1024] = '\0';        vmShowMutex.Release();        return strShowBuf;}int     CvtFTC::Upload( ){        int        iError;                 int        iPackID;        int        iFileIdx,iFileNum,iDirNum,iLoop;        iPackID = 0;                iDirNum = vastrDirList.size();        iFileNum = vastrFileList.size();        for (iLoop = 0; iLoop < iDirNum; iLoop++)        {                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));                iPackAttrib = 100;                sprintf(strTmp,"%8d%s:%s",iPackAttrib,"mkdir",(char*)vastrDirList[iLoop]);                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",iStrlens,strTmp);                iBuflens = strlen(chPostBuf);                 write(iSock, chPostBuf, iBuflens);                iSize = read(iSock, strTmp, sizeof(strTmp));                strTmp[iSize] = '\0';                close(iSock);                vmShowMutex.Lock();                strncpy(strShowInfo,strTmp,iSize);                strShowInfo[iSize]='\0';                vmShowMutex.Release();                usleep (100000);        } for (iFileIdx = 0;  iFileIdx < iFileNum; iFileIdx++){        vstrTmp = strLocalPath;        vstrTmp += "/";        vstrTmp += vastrFileList[iFileIdx];        strcpy(strLocalFilePath,(char*)vstrTmp);/*        iSize = 1024;	vmShowMutex.Lock();	strncpy(strShowInfo,strLocalFilePath,iSize);	strShowInfo[iSize]='\0';       //sprintf(strShowInfo,"iSock:  %d  hostadd: %s  iError:  %d",iSock,strHostAdd,iError);	vmShowMutex.Release();        sleep(2);*/        ifUpload.open(strLocalFilePath,ios::in|ios::binary|ios::nocreate);        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));	iPackAttrib = 100;	sprintf(strTmp,"%8d%s:%s",iPackAttrib,"start",(char*)vastrFileList[iFileIdx]);	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",iStrlens,strTmp);        iBuflens = strlen(chPostBuf); 	write(iSock, chPostBuf, iBuflens);        iSize = read(iSock, strTmp, sizeof(strTmp));	strTmp[iSize] = '\0';        close(iSock);	vmShowMutex.Lock();	strncpy(strShowInfo,strTmp,iSize);	strShowInfo[iSize]='\0';	vmShowMutex.Release();        usleep (10000);        while (1)        {                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));                ifUpload.read(chFileBuf,10000);                iCounts = ifUpload.gcount();		iPackID++;		iPackAttrib = 200;                                sprintf(chPostBuf,"POST /perl/fts.cgi HTTP/1.1\r\nHost: 127.0.0.1\r\nContent-Length: %d\r\n\r\n",iCounts+16);                iStrlens = strlen(chPostBuf);                                                 sprintf(strTmp,"%8d%8d",iPackAttrib,iPackID);		memmove(&chPostBuf[iStrlens],strTmp,16);                iStrlens = iStrlens + 16;                memmove(&chPostBuf[iStrlens],chFileBuf,iCounts);                        iBuflens = iStrlens + iCounts;						write(iSock, chPostBuf, iBuflens);                iSize = read(iSock, strTmp, sizeof(strTmp));		strTmp[iSize] = '\0';                close(iSock);		vmShowMutex.Lock();		strncpy(strShowInfo,strTmp,iSize);		strShowInfo[iSize]='\0';		vmShowMutex.Release();		if (ifUpload.good()==0) 	        {		    ifUpload.close();                		    break;		}          usleep(1000);      	}        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));	iPackAttrib = 100;	sprintf(strTmp,"%8d%s:%s",iPackAttrib,"end",(char*)vastrFileList[iFileIdx]);	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",iStrlens,strTmp);        iBuflens = strlen(chPostBuf); 	write(iSock, chPostBuf, iBuflens);        iSize = read(iSock, strTmp, sizeof(strTmp));	strTmp[iSize] = '\0';        close(iSock);	vmShowMutex.Lock();	strncpy(strShowInfo,strTmp,iSize);	strShowInfo[iSize]='\0';	vmShowMutex.Release();}        return 0;}int     CvtFTC::Download( ){        int                 iFln, iLoop,iSize,iDlSizes;        //char              strDlFilePath[4096];        ofstream         ofDlFile;        iFln = vastrFileList.size();        for (iLoop = 0; iLoop < iFln; iLoop++)        {                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));                iPackAttrib = 100;                sprintf(strTmp,"%8d%s:%s",iPackAttrib,"get",(char*)vastrFileList[iLoop]);                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",iStrlens,strTmp);                iBuflens = strlen(chPostBuf);                 write(iSock, chPostBuf, iBuflens);                ifstream      ifsock(iSock);                iDlSizes = 0;                       sprintf(strTmp,"%s/%s",strLocalPath,(char*)vastrFileList[iLoop]);                ofDlFile.open(strTmp,ios::out|ios::binary|ios::trunc);                while (1)                {                        ifsock.read(strTmp,1024);                        iSize = ifsock.gcount();                        ofDlFile.write(strTmp, iSize);                        iDlSizes = iDlSizes + iSize;                        sprintf(strTmp,"DownLoad:   %s  %d  Byte",(char*)vastrFileList[iLoop],iDlSizes);                   	    vmShowMutex.Lock();                        strcpy(strShowInfo,strTmp);                        vmShowMutex.Release();                        if (ifsock.good() == 0) break;                }                sleep(1);                ifsock.close();                ofDlFile.close();                close(iSock);        }                sleep(5);    	   vmShowMutex.Lock();        sprintf(strShowInfo,"DownLoad  END.");        vmShowMutex.Release();        return 0;}void CvtFTC::Execute ( ){        if(strcmp(strCmd,"upload") == 0)  UploadSetup();        if(strcmp(strCmd,"download") == 0)  DownloadSetup();        if(strcmp(strCmd,"upload") == 0)  Upload();        if(strcmp(strCmd,"download") == 0)  Download();}// do not remove this mark: #!#// end of file:vtft.cc

⌨️ 快捷键说明

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