From ac88ca0e7f6010acc1d4ab2dd69938791486a9cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=91=D1=8B=D1=87=D0=BA=D0=BE=D0=B2=20=D0=90=D0=BD=D0=B4?= =?UTF-8?q?=D1=80=D0=B5=D0=B9?= Date: Tue, 7 Apr 2015 10:53:26 +0000 Subject: [PATCH] git-svn-id: svn://db.shs.com.ru/pip@71 12ceb7fc-bf1f-11e4-8940-5bc7170c53b5 --- src/io/pifiletransfer.cpp | 17 +++++++++-------- utils/udp_file_transfer/main.cpp | 19 ++++++++++++++----- 2 files changed, 23 insertions(+), 13 deletions(-) diff --git a/src/io/pifiletransfer.cpp b/src/io/pifiletransfer.cpp index f9b46d58..ae2a9199 100644 --- a/src/io/pifiletransfer.cpp +++ b/src/io/pifiletransfer.cpp @@ -49,8 +49,8 @@ bool PIFileTransfer::send(PIVector entries) { allEntries.back().dest_path = entries[i].name(); if (entries[i].isDir()) { PIDir d(entries[i].path); - d.up(); PIVector fls = d.allEntries(); + d.up(); for (int j=0; j &files) { if (names.contains(files_[i].path)) {files_.remove(i); i--;} else names << files_[i].path; if (files_[i].isDir()) files_[i].size = 0; -// piCout << "prepare" << i << files_[i].path << files_[i].size; +// piCout << "prepare" << i << files_[i].path << files_[i].dest_path << files_[i].name(); } srand(PISystemTime::current().toMilliseconds()); pftheader.session_id = rand(); @@ -93,13 +93,13 @@ bool PIFileTransfer::sendFiles(const PIVector &files) { void PIFileTransfer::processFile(int id, ullong start, PIByteArray & data) { -// piCout << "processFile" << id << files_.size(); - PIFile::FileInfo fi = files_[id-1]; + piCout << "processFile" << id << files_.size(); + PFTFileInfo fi = files_[id-1]; bytes_file_all = fi.size; bytes_file_cur = start; - cur_file_string = fi.path; - PIString path = dir.absolutePath() + dir.separator + fi.path; -// piCout << "receive" << path << fi.size << data.size(); + cur_file_string = fi.dest_path; + PIString path = dir.absolutePath() + dir.separator + fi.dest_path; + piCout << "receive" << path << fi.size << data.size(); if (fi.isDir()) { // piCoutObj << "make dir" << fi.entry.path; if (!PIDir::make(path)) { @@ -254,7 +254,8 @@ void PIFileTransfer::receive_finished(bool ok) { if (ok) { desc >> files_; PIStringList files; - piForeachC(PIFile::FileInfo &fi, files_) files << fi.path; + piForeachC(PFTFileInfo &fi, files_) files << fi.dest_path; +// piCout << files; receiveFilesRequest(files, bytesAll(), &user_ok); } if (!ok || !user_ok) { diff --git a/utils/udp_file_transfer/main.cpp b/utils/udp_file_transfer/main.cpp index 31c8b390..705c5b15 100644 --- a/utils/udp_file_transfer/main.cpp +++ b/utils/udp_file_transfer/main.cpp @@ -12,7 +12,8 @@ public: quet_ = false; eth.setReadAddress(src_ip_port); eth.setSendAddress(dst_ip_port); - //ft.setPacketSize(65000); + ft.setPacketSize(8192); + ft.setName("PIFT"); CONNECTU(&ft, sendRequest, this, ftsend); CONNECTU(&ft, sendFilesStarted, this, ftevent); CONNECTU(&ft, receiveFilesStarted, this, ftevent); @@ -39,6 +40,10 @@ private: void tick(void *, int) { if (ft.isSending() || ft.isReceiving()) { ftevent(); + if (PIKbdListener::exiting) { + ft.stopSend(); + ft.stopReceive(); + } // piCout << (int)ft.diagnostic().quality(); } } @@ -71,8 +76,9 @@ private: void usage() { piCout << Bold << "PIP UDP file transfer"; piCout << Cyan << "Version" << Bold << PIPVersion() << NewLine; - piCout << Green << Bold << "Usage:" << Default << "\"pift [-hq] -r -s [-d ] [-p port] [] [] [] [...]\"" << NewLine; + piCout << Green << Bold << "Usage:" << Default << "\"pift [-hqf] -r -s [-d ] [-p port] [] [] [] [...]\"" << NewLine; piCout << Green << Bold << "Details:"; + piCout << "-f " << Green << "- full path in and "; piCout << "-h " << Green << "- display this message and exit"; piCout << "-q " << Green << "- quiet, no debug output to console"; piCout << "-r " << Green << "- set receive ip address, must be ip address of this computer"; @@ -92,7 +98,8 @@ int main (int argc, char * argv[]) { cli.addArgument("port", true); cli.addArgument("help"); cli.addArgument("quet"); - if (!cli.hasArgument("send") || !cli.hasArgument("receive") || cli.hasArgument("help")) { + cli.addArgument("fullpath"); + if ((!cli.hasArgument("send") || !cli.hasArgument("receive")) || cli.hasArgument("help")) { usage(); return 0; } @@ -101,10 +108,12 @@ int main (int argc, char * argv[]) { int port = -1; if (cli.hasArgument("port")) port = cli.argumentValue("port").toInt(); if (port <=0) port = 50005; + if (!cli.hasArgument("fullpath")) { + src += ":"+PIString::fromNumber(port); + dst += ":"+PIString::fromNumber(port); + } PIKbdListener kbd; kbd.enableExitCapture(); - src += ":"+PIString::fromNumber(port); - dst += ":"+PIString::fromNumber(port); UDPFileTransfer f(src, dst); if (cli.hasArgument("dir")) f.ft.setDirectory(cli.argumentValue("dir")); if (cli.hasArgument("quet")) f.setQuet(true);