Transfer Status ...
-
Hallo,
ich hab jetzt zwei Anwendungen soweit sich gegenseitig Dateien über ein Netzwerk zu schicken.
Jetzt würde ich aber gerne noch den Status während der Übermittlung abfragen, hat jemand eine Idee ?Thx
-
welchen Status?
Wieviel von der Datei schon gesendet wurde oder was meinst du?
-
Ja, genau sowas meine ich.
So wie das halt überall ist...
-
Hol doch einfach vor dem Transfer die Größe der Datei und vergleiche es mit der Größe der empfangenen Daten! Dann kannst du dir den Prozentsatz ja leicht selbst ausrechnen!
-
Gute Idee !
Dann müsste ich noch einen Timer einbauen...
Weißt du denn den 'Befehl' zum auslesen der Dateigröße ? (musst jetzt nicht nachgucken)Thx
-
CFile::GetLength()
-
Ok, Thx a lot.
Ich probiers morgen mal aus ....
Jetzt lern ich erst mal Franz.. *kotz*
-
Ich hab jetzt folgendes beim entgegennehmen der Datei ...
if(m_bReceive == FALSE) //m_dataLength wurde noch nicht empfangen { m_sFile.Receive(&m_dataLength, 4); m_received=0; m_bReceive = TRUE; byte *m_data = new byte[m_dataLength]; } int iLen; iLen=m_sFile.Receive(m_data+m_received, m_dataLength-m_received); if(iLen>0) { m_received = m_received + iLen; } int iState = m_received/m_dataLength*100*; // Hier ist das Problem ! m_pState.SetPos(iState); //Dateiende erreicht? if(m_received==m_dataLength) { CFile destFile(m_strDatei, CFile::modeCreate | CFile::modeWrite | CFile::typeBinary); destFile.Write(m_data, m_dataLength); // Write it destFile.Close(); delete m_data; m_sFile.Close(); GetDlgItem(IDC_BCLOSE)->EnableWindow(TRUE); GetDlgItem(IDC_BCANCEL)->EnableWindow(FALSE); //Statusmeldung m_strStatus= "Transfer beendet."; UpdateData(FALSE); }
Frage: Warum bekomme ich da so gr0ße Zahlen raus ?
Und wie bekomm ich da % raus ?Thx
-
Dreisatz
m_received*100/m_dataLength
PS: Das **byte *** in der if-Abfrage bei m_data muss da raus. Du definierst hier eine neue lokale Variable, sprichst aber weiter unten die Membervariable Deiner Klasse an.
-
Das byte* is da schon längst raus ...
Wollte es nur nicht nochmal neu schreiben ...Ich finde es aber trotzdem seltsam das m_received*100/m_dataLength != m_received/m_dataLength*100 ...
Naja jetzt funzt es jedenfalls ...
Nochmals danke!
-
Hmmmm,
wie ginge das ganze jetzt auf der Server Seite ?m_sFile.Accept(m_sFileAccept); CFile myFile; myFile.Open(m_strDatei, CFile::modeRead | CFile::typeBinary); // Länge senden int myFileLength = myFile.GetLength(); m_sFileAccept.Send(&myFileLength, 4); byte* data = new byte[myFileLength]; // Inhalt senden myFile.Read(data, myFileLength); m_sFileAccept.Send(data, myFileLength); myFile.Close(); delete data; m_sFile.Close(); m_sFileAccept.Close();
Hier sendet der Server ja die Datei in einem durch ...
Ich hab echt kein Plan ....plz help
-
Das ist mit Deinem Ansatz auf der Serverseite nicht möglich.
-
Ich bin für jeden anderen Ansatz dankbar ...