示例#1
0
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;
}
示例#3
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();
}
示例#4
0
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();
}
示例#5
0
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]);
}