📄 vwftc01.cc
字号:
/*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 + -