Laden...

System IOException asynchronem Dateitransfer mittels FTP

Erstellt von The_Mexican vor 13 Jahren Letzter Beitrag vor 13 Jahren 5.187 Views
The_Mexican Themenstarter:in
87 Beiträge seit 2009
vor 13 Jahren
System IOException asynchronem Dateitransfer mittels FTP

Hi @all,

ich verzweifle.....!!!!

ich führe asynchronen einen dateitransfer mittels ftp aus und warte solange darauf bis der vorgang beendet ist - wie auch immer.

folgende implemtentierung bei der übertragung einer datei:


            FTPState endStreamState = (FTPState)ar.AsyncState;
            Stream requestStream = null;

            try
            {
                // End the asynchronous call to get the request stream.
                requestStream = endStreamState.Request.EndGetRequestStream(ar);

                // Copy the file contents to the request stream.
                const int bufferLength = 2048;
                byte[] buffer = new byte[bufferLength];
                int count = 0;
                int readBytes = 0;

                // open the file to read
                FileStream stream = File.OpenRead(endStreamState.FileName);
                                
                // ...
                
                do
                {
                    // Read in data of file
                    readBytes = stream.Read(buffer, 0, bufferLength);
                    // Write data to server
                    requestStream.Write(buffer, 0, readBytes);
                    count += readBytes;
                   //...

Wann kommt ein Fehler:
kann nicht genau definiert werden er kam ...
1.) datei ca 300 mb
2.) datei mit 70 mb

--> Ich habe jedoch dateien > 300 mb und > 500 mb bereits erfolgreich übertragen bevor der fehler kommt

was sagt der fehler:


IOException:

Message:
{"In die Übertragungsverbindung können keine Daten geschrieben werden: Eine vorhandene Verbindung wurde vom Remotehost geschlossen."}

Inner Exception:
"Eine vorhandene Verbindung wurde vom Remotehost geschlossen

System.Net.Sockets.SocketException: Eine vorhandene Verbindung wurde vom Remotehost geschlossen
ErrorCode: 10045
SocketErrorCode: Connection Reset

Fehler wird erzeugt bei Metode "Write(Byte[], int32, int32)
// Write data to server
requestStream.Write(buffer, 0, readBytes);

ex.ToString():
System.IO.IOException: In die Übertragungsverbindung können keine Daten geschrieben werden: Eine vorhandene Verbindung wurde vom Remotehost geschlossen. ---> System.Net.Sockets.SocketException: Eine vorhandene Verbindung wurde vom Remotehost geschlossen
   bei System.Net.Sockets.Socket.Send(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags)
   bei System.Net.Sockets.NetworkStream.Write(Byte[] buffer, Int32 offset, Int32 size)
   --- Ende der internen Ausnahmestapelüberwachung ---
   bei System.Net.Sockets.NetworkStream.Write(Byte[] buffer, Int32 offset, Int32 size)
   bei System.Net.FtpDataStream.Write(Byte[] buffer, Int32 offset, Int32 size)
   bei ...FTP.EndGetStreamCallback(IAsyncResult ar) in Laufwerk\pfad\...\FTP.cs:Zeile 571.

kann mir einer sagen an was das liegt???? X(

greets
mex

que? como? no entiendo!!!!!

Gelöschter Account
vor 13 Jahren

der server hat die verbindung geschlossen... das ist los.

im übrigen kannst du auch die Stream.CopyTo(stream) methode verwenden (.net 35 oder 4 war das glaub ich...) und musst nicht mit irgendwelchen bufferarrays arbeiten..

The_Mexican Themenstarter:in
87 Beiträge seit 2009
vor 13 Jahren

danke für die antwort...

das würde sowas bedeuten wie:

the underlying connection was closed....

ich würde gerne wissen warum das passiert!

greets
mex

que? como? no entiendo!!!!!

Gelöschter Account
vor 13 Jahren

Ja also ich seh bei meinem ftp client auch das die verbindung nach n Sekunden geschlossen wird während einer übertragung einer sehr grossen Datei, das hält ihn aber nicht davon ab die datei noch zu ende zu übertragen. Vielleicht ist die CopyTo Methode da tatsächlich hilfreicher - teste das mal.