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

📄 vwftc01.cc

📁 http协议下的文件传输程序
💻 CC
📖 第 1 页 / 共 2 页
字号:
/*vwftc01 Plain VDK ApplicationMain unit implementation file:vwftc01.cc*/#include <vwftc01.h>/*main program*/ynad address[MAX_ADDR]={  {{"  ","  ","  ","  ","  "}},  {{"  ","  "," ","  ","  "}},  {{"  ","  ","  ","  ","  "}}}; int main (int argc, char *argv[]){   gtk_set_locale();// makes applicationVwftc01App app(&argc, argv);// runs applicationapp.Run();return 0;}//ON_SIGNAL(timer,timer_tick_signal,OnTimer),//ON_SIGNAL(timer,MYSIGNAL,MySignalCallback),// Vwftc01 MAIN FORM  CLASS/*main form constructor*/Vwftc01Form::Vwftc01Form(VDKApplication* app, char* title):	VDKForm(app,title){}/*main form destructor*/Vwftc01Form::~Vwftc01Form(){}/*main form setup*/voidVwftc01Form::Setup(void){        GUISetup();        // put your code below here        timer = new VDKTimer(this,1000,false);        //myobject = timer;        //iLocalistmaxrow = 10;         //for(int i=0; i <= iLocalistmaxrow; i++)                 //locallist->AddRow(address[1].items);        //locallist->AddRow(address[0].items);        //locallist->AddRow(address[0].items);        iLocalListMaxRow = 0;         iRemoteListMaxRow = 0;        isigs = 0;        //obcom = new  VDKThread();        //obtest.Start ((void *)test);        //strcpy(strLdir,"./");        //localdir();}// Vwftc01 APPLICATION  CLASS/*application constructor*/Vwftc01App::Vwftc01App(int* argc, char** argv):	VDKApplication(argc,argv){}/*application destructor*/Vwftc01App::~Vwftc01App(){ }/*application setup*/voidVwftc01App::Setup(void){        	MainForm = new Vwftc01Form(this,NULL);        	MainForm->Setup();        	MainForm->Visible = true;}void Vwftc01Form::localdir(){        tuTmp.resize(10);        iDirs = 0;        iFiles = 0;        tlDir.flush();        tlFile.flush();        struct dirent **namelist;        int    n,iLoop;          for (iLoop = 0;  iLoop <= iLocalListMaxRow; iLoop++)        {                locallist->RemoveRow(0);        }                    n = scandir(strLdir, &namelist, 0, alphasort);        if (n < 0)               perror("scandir");        else         {               for (iLoop = 0; iLoop < n; iLoop++)                {                       sprintf(strpath,"%s/%s",strLdir,namelist[iLoop]->d_name);                       stat(strpath, &mystat);                       pmytm = localtime(&mystat.st_mtime);                       pmytm->tm_year += 1900;                       pmytm->tm_mon += 1;                       if (S_ISDIR(mystat.st_mode))                               sprintf(strtmp,"%s","/" );                       else                                 sprintf(strtmp,"%s"," ");                       tuTmp[0] = strtmp;                       tuTmp[1] = namelist[iLoop]->d_name;                       sprintf(strtmp,"%ld", mystat.st_size);                       tuTmp[2] = strtmp;                       sprintf(strtmp,"%d/%d/%d  %d:%d:%d", pmytm->tm_year,pmytm->tm_mon,pmytm->tm_mday,pmytm->tm_hour,pmytm->tm_min,pmytm->tm_sec);                       tuTmp[3] = strtmp;                       free(namelist[iLoop]);                       if (strcmp(tuTmp[0], "/") == 0)                       {                               tlDir.add(tuTmp);                               iDirs++;                       }                       if (strcmp(tuTmp[0], " ") == 0)                       {                               tlFile.add(tuTmp);                               iFiles++;                       }               }               free(namelist);        }                iLocalListMaxRow = n-1;        for (iLoop = 0; iLoop < iDirs; iLoop++)        {                tuTmp = tlDir[iLoop];                ptuTmp = &tlDir[iLoop];                for (iLoop01 = iLoop; iLoop01 < iDirs; iLoop01++)                {                        if (strcmp(tuTmp[1],tlDir[iLoop01][1]) > 0)                        {                                ptuTmp = &tlDir[iLoop01];                                tuTmp = tlDir[iLoop01];                        }                }                *ptuTmp = tlDir[iLoop];                tlDir[iLoop] = tuTmp;        }        for (iLoop = 0; iLoop < iFiles; iLoop++)        {                tuTmp = tlFile[iLoop];                ptuTmp = &tlFile[iLoop];                for (iLoop01 = iLoop; iLoop01 < iFiles; iLoop01++)                {                        if (strcmp(tuTmp[1],tlFile[iLoop01][1]) > 0)                        {                                ptuTmp = &tlFile[iLoop01];                                tuTmp = tlFile[iLoop01];                        }                }                *ptuTmp = tlFile[iLoop];                tlFile[iLoop] = tuTmp;        }                for (iLoop = 0; iLoop < iDirs; iLoop++)        {                locallist->AddRow(address[0].items);                locallist->UpdateCell(iLoop,0,tlDir[iLoop][0]);                locallist->UpdateCell(iLoop,1,tlDir[iLoop][1]);                locallist->UpdateCell(iLoop,2,tlDir[iLoop][2]);                locallist->UpdateCell(iLoop,3,tlDir[iLoop][3]);        }        for (iLoop = 0; iLoop < iFiles; iLoop++)        {                locallist->AddRow(address[0].items);                locallist->UpdateCell(iLoop+iDirs,0,tlFile[iLoop][0]);                locallist->UpdateCell(iLoop+iDirs,1,tlFile[iLoop][1]);                locallist->UpdateCell(iLoop+iDirs,2,tlFile[iLoop][2]);                locallist->UpdateCell(iLoop+iDirs,3,tlFile[iLoop][3]);        }}void Vwftc01Form::remotedir(){        char    strbuf00[256];        char    strbuf01[256];        char    strbuf02[256];        char    strbuf03[256];        int       istrstart;        int       istrlen;        tuTmp.resize(10);        iDirs = 0;        iFiles = 0;        tlDir.flush();        tlFile.flush();        int    iLoop = 0;                for (iLoop = 0;  iLoop <= iRemoteListMaxRow; iLoop++)                       remotelist->RemoveRow(0);        int     ierror;        strcpy(hostp,strhost);        strcpy(portp,"80");        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));        ierror = connect(sock, (struct sockaddr *)&soin, sizeof(soin));        sprintf(strtmp,"%d",ierror);        int	iPackAttrib = 100;        sprintf(strbuf,"%8d%s:%s",iPackAttrib,"cd",strRdir);        istrlens=strlen(strbuf);        sprintf(buffer,"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,strbuf);        write(sock,  buffer,strlen(buffer));        int             iRows;        ifstream      ifsock(sock);        iRows = 0;        while (1)        {                ifsock.getline(buffer,1024,'\n');                if (ifsock.good() == 0) break;                //int n = read(sock, buffer, sizeof(buffer));                buffer[1024] = '\0';                istrlen = strlen(buffer);                for (iLoop =0;  iLoop < istrlen; iLoop++)                {                        if (buffer[iLoop] == ',')                        {                                buffer[iLoop] = '\0';                                strcpy(strbuf00,buffer);                                break;                        }                }                istrstart = iLoop+1;                for (iLoop = istrstart;  iLoop < istrlen; iLoop++)                {                        if (buffer[iLoop] == ',')                        {                                buffer[iLoop] = '\0';                                strcpy(strbuf01,&buffer[istrstart]);                                break;                        }                }                istrstart = iLoop+1;                for (iLoop = istrstart;  iLoop < istrlen; iLoop++)                {                        if (buffer[iLoop] == ',')                        {                                buffer[iLoop] = '\0';                                strcpy(strbuf02,&buffer[istrstart]);                                break;                        }                }                strcpy(strbuf03,&buffer[iLoop + 1]);                tuTmp[0] = strbuf00;                tuTmp[1] = strbuf01;                tuTmp[2] = strbuf02;                tuTmp[3] = strbuf03;                                if (strcmp(tuTmp[0],"/") == 0)                {                        tlDir.add(tuTmp);                        iDirs++;                }                else                {                        tlFile.add(tuTmp);                        iFiles++;                }        }        iRemoteListMaxRow = iDirs+iFiles;        close(sock);        for (iLoop = 0; iLoop < iDirs; iLoop++)        {                tuTmp = tlDir[iLoop];                ptuTmp = &tlDir[iLoop];                for (iLoop01 = iLoop; iLoop01 < iDirs; iLoop01++)                {                        if (strcmp(tuTmp[1],tlDir[iLoop01][1]) > 0)                        {                                ptuTmp = &tlDir[iLoop01];                                tuTmp = tlDir[iLoop01];                        }                }                *ptuTmp = tlDir[iLoop];                tlDir[iLoop] = tuTmp;        }        for (iLoop = 0; iLoop < iFiles; iLoop++)        {                tuTmp = tlFile[iLoop];                ptuTmp = &tlFile[iLoop];                for (iLoop01 = iLoop; iLoop01 < iFiles; iLoop01++)                {                        if (strcmp(tuTmp[1],tlFile[iLoop01][1]) > 0)                        {                                ptuTmp = &tlFile[iLoop01];                                tuTmp = tlFile[iLoop01];                        }                }                *ptuTmp = tlFile[iLoop];                tlFile[iLoop] = tuTmp;        }        for (iLoop = 0; iLoop < iDirs; iLoop++)        {                remotelist->AddRow(address[0].items);                remotelist->UpdateCell(iLoop,0,tlDir[iLoop][0]);                remotelist->UpdateCell(iLoop,1,tlDir[iLoop][1]);                remotelist->UpdateCell(iLoop,2,tlDir[iLoop][2]);                remotelist->UpdateCell(iLoop,3,tlDir[iLoop][3]);        }        for (iLoop = 0; iLoop < iFiles; iLoop++)        {                remotelist->AddRow(address[0].items);                remotelist->UpdateCell(iLoop+iDirs,0,tlFile[iLoop][0]);                remotelist->UpdateCell(iLoop+iDirs,1,tlFile[iLoop][1]);                remotelist->UpdateCell(iLoop+iDirs,2,tlFile[iLoop][2]);                remotelist->UpdateCell(iLoop+iDirs,3,tlFile[iLoop][3]);        }}// do not remove this mark: #!#//signal response methodboolVwftc01Form::OnbuttondownloadClick(VDKObject* sender){        int         iLoop,iRow,iRows;        iaSelections = remotelist->Selections();        iRows = iaSelections.size();        vastrLists.resize(iRows);        for (iLoop = 0;  iLoop < iRows; iLoop++)        {                iRow = iaSelections[iLoop];                vastrLists[iLoop] = remotelist->Tuples[iRow][1];                if (strcmp("/",remotelist->Tuples[iRow][0]) == 0)  vastrLists[iLoop] += "/";        }        pvtFTC = new CvtFTC();        pvtFTC->Setup("localhost","download",strLdir, strRdir, &vastrLists);        pvtFTC->Start();        timer->Start();        return true;}//signal response methodboolVwftc01Form::OnremotelistSelectRow(VDKObject* sender){        int           iRow;        char       *pstrifdir;        char       *pstrdir;        iaSelections = remotelist->Selections();        iRow = iaSelections[0];        pstrifdir = (char *)remotelist->Tuples[iRow][0];        pstrdir = (char *)remotelist->Tuples[iRow][1];                if (*pstrifdir == '/')        {                if (strcmp(pstrdir,"..") == 0)                        for (int iLoop = strlen(strRdir) - 1; iLoop >= 0; iLoop--)                        {                                if (strRdir[iLoop] == '/')                                {                                        strRdir[iLoop] = '\0';                                        if (iLoop == 0) strcpy(strRdir,"/");                                        break;                                       }

⌨️ 快捷键说明

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