void fileTransferThread::parseFileList( const QByteArray &fl ) { parsedSize=0; filesParsed=0; fc=0; allSize=0; currentFile=0; QTreeWidgetItem *item; QStringList finfo; QString path = settings->profileValue( QString("filetransfer/%1").arg(rndid) ).toString(), fname; memcpy(&fc, fl.leftRef(4).constData(), 4); for(quint32 i=0; i<fc; ++i) { memcpy(&fs, fl.mid(4+i*260, 4).data(), 4); fname=fl.mid(4+i*260+4, 256); finfo<<fname<<""<<""<<""<<""<<QString("%L1 kB").arg( (float)qRound( ( (float)fs/1024 )*10 )/10 )<<path<<QString("%1").arg(fs); item = new QTreeWidgetItem(finfo); item->setIcon(0, QIcon(":offline")); // item->setCheckState(0,Qt::Checked); fileMap<<item; emit addListItem(item); allSize+=fs; finfo.clear(); } settings->removeProfileValue( QString("filetransfer/%1").arg(rndid) ); char packet[8]; quint32 tmp=FileListAck; memcpy(&packet, &tmp,4); tmp=0; memcpy(&packet[4], &tmp,4); socket->write(packet,sizeof(packet)); emit updateFilesData(fc, allSize); requestFile(); }
int main(int argc, char *argv[]) { Connection conn; char filename[MAX_FILENAME]; int ctrl, first = TRUE; pid_t child; if (argc != 3) { fprintf(stderr, "syntax: %s <address> <port>\n", argv[0]); exit(-1); } //if (checkaddress(argv[1])) return -1; conn = conn_connect(argv[1], checkport(argv[2])); signal(SIGCHLD, signalHandler); signal(SIGINT, signalHandler); printf("Insert filename or <quit> to close the connection\n"); while (TRUE) { readline(filename, MAX_FILENAME); if (!strcmp(filename, "Q") || !strcmp(filename, "q")) { printf("Terminating connection with server...\n"); ctrl = conn_sends(conn, "QUIT\r\n"); if (ctrl == -1) return -1; ctrl = conn_close(conn); if (ctrl == -1) return -1; return 0; } if (!strcmp(filename, "A") || !strcmp(filename, "a")) { printf("Aborting connection with server...\n"); if (kill(child, SIGKILL)) report_err("Cannot terminate a child"); ctrl = conn_close(conn); if (ctrl == -1) return -1; return 0; } if (!first) wait(NULL); else first = FALSE; child = fork(); if (!child) { ctrl = requestFile(conn, filename); if (ctrl == -1) return -1; return 0; } } return 0; }
void fileTransferThread::parseEndOfFile() { qDebug()<<"Closing file"<<current->fileName(); current->close(); fileMap.at(currentFile)->setIcon(0, QIcon(":online")); ++filesParsed; if(filesParsed==fc) t->stop(); emit updateTransferData(fc, filesParsed, allSize, parsedSize, allTime, cfTime, fileMap.at(currentFile)); ++currentFile; requestFile(); }
void Updater::headersReceived() { QNetworkReply * reply = qobject_cast<QNetworkReply *>( sender() ); Q_ASSERT( 0 != reply ); qDebug() << " Headers received " << reply->url() << "\nStatus: " << reply->error(); if( GettingHeaders == m_state ) { if( QNetworkReply::NoError == reply->error() ) { QDateTime lastModified = reply->header( QNetworkRequest::LastModifiedHeader ).toDateTime(); if( AdvertisementsList::instance()->at( m_currentAdIndex ).lastModified() == lastModified ) { // ad didn't changed. Go to next one if any requestNext(); } else { m_pkg = new Package( m_currentAdIndex ); m_pkg->setLastModified( lastModified ); requestFile(); } } else { qDebug() << "Error occured during headers request" << reply->errorString(); // try to get next one requestNext(); } } else { // this should not happen Q_ASSERT( false ); } // schedule delete of replay. We don't need it anymore reply->deleteLater(); }
void main(int argc,char *argv[]){ struct sockaddr_in server_addr; struct hostent *server; int sockFd,portNum,connType; if(argc<5){ printf("Enter host name , port number , Src fileName & Dest fileName"); exit(0); } sockFd = socket(AF_INET,SOCK_DGRAM,0); if(sockFd<0){error("Error creating host");} portNum = atoi(argv[2]); server = gethostbyname(argv[1]); if(server==NULL){error("No such hosts");} bzero((char*)&server_addr,sizeof(server_addr)); server_addr.sin_family = AF_INET; server_addr.sin_port = htons(portNum); bcopy((char*)server->h_addr,(char*)&server_addr.sin_addr.s_addr, server->h_length); requestFile(sockFd,argv[3],server_addr); handleReadWrite(sockFd,server_addr,argv[4]); }