Frage : Ftp und System.Net.Sockets.NetworkStream Elende

Hallo alle,

I morgens habend, was wie ein Problem zwischen meiner Puffergröße und networkstream aussieht.  Ich kann wirklich nicht tell.

Currently, bin ich Wanzenfestlegung und -anwendung, die begonnen hat zu fungieren verworrenes wenig.  Die Anwendungshauptfunktion ist, an ein ftp server und zu laden/verschiedene Akten des Downloads der verschiedenen Größen anzuschließen.  Die Akten sind EDI-Dateien für einen Klienten.  Es funktioniert (ein wenig) und ich denke, dass es die Methodenlehre innerhalb der ftp-Kategorie sein kann, die ich using.

More spezifisch in Bezug auf das Zurückholen der Akten vom fraglichen ftp server bin.  Ich sage, dass dieses, weil die sendfile und getfilelist Funktionen ohne eine hitch.

The Ausgabe mich bearbeiten, haben ist, dass die Akten nur zur maximalen Größe vom Puffer und anscheinend nicht weiter herunterladen.  Ich erhalte irgendwelche nicht aus Gedächtnisausnahmen heraus.  Die einzige reale Störung, die ich erhalte, ist diese:

07/08/2010 12:02: 20.6272 sagen 550, die der spezifizierte Netzname nicht mehr available.

I ist, dass die Akten Downloading zur Puffergröße sind, nur weil ich innen gehen und meine Puffergröße ändern kann und nur zurückholen werde, dass Menge Daten, bevor die Network Connection durch die ftp server.

Any Hilfe geschlossen wird, groß appreciated.

-saige-
sein würde
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
6:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
FTP.vb
		Const BUFFSIZE als ganze Zahl = 4096

		Freund-Funktion ReceiveFile (ByVal sLocalFilename als Schnur, ByVal sRemoteFilename als Schnur, ByVal XferMode als TransferMode) wie Boolesch
			Schwaches objLocalFileStream als FileStream
			Schwaches mTCPData als neues TcpClient
			Schwaches mDataStream als NetworkStream
			Schwacher Hafen als ganze Zahl = 20
			Schwache strIPAddress als Schnur
			Schwaches sOut als Schnur = ""

			Wenn (nicht bConnectionOpen) dann
				Wurf neues FtpClientException (0, „ReceiveFile“ u. vbCrLf u. „Anschluss nicht geöffnet“)
			Beenden wenn
			Versuch
				objLocalFileStream = neues FileStream (sLocalFilename, FileMode.Create, FileAccess.ReadWrite, FileShare.Read, BUFFSIZE, falsch)
			Fang ex als FileNotFoundException
				Wurf neues FtpClientException (0, „geöffnete lokale Akte - Akte nicht gefunden (“ u. vbCrLf u. sLocalFilename u. vbCrLf u. ex. Mitteilung)
			Fang ex als DirectoryNotFoundException
				Wurf neues FtpClientException (0, „geöffnete lokale Akte - Verzeichnis nicht gefunden“ u. vbCrLf u. sLocalFilename u. vbCrLf u. ex. Mitteilung)
			Fang ex als SecurityException
				Wurf neues FtpClientException (0, „geöffnete lokale Akte“ u. vbCrLf u. sLocalFilename u. vbCrLf u. ex. Mitteilung)
			Fang ex als UnauthorizedAccessException
				Wurf neues FtpClientException (0, „geöffnete lokale Akte“ u. vbCrLf u. sLocalFilename u. vbCrLf u. ex. Mitteilung)
			Fang ex als Ausnahme
				Wurf neues FtpClientException (0, „geöffnete lokale Akte“ u. vbCrLf u. sLocalFilename u. vbCrLf u. ex. Mitteilung)
			Enden-Versuch
			'Übergangsmodus einstellen
			Fall XferMode vorwählen
				TransferMode.Ascii umkleiden
					SendFTPCommand („A SCHREIBEN“)
					sOut = ReadReply ()
				Fall TransferMode.Binary
					SendFTPCommand („ART I“)
					sOut = ReadReply ()
			Ende auserwählt
			Application.DoEvents ()
			'
			'
			Anruf ReadyDataSocketAndSendCommand („RETR“ u. Path.GetFileName (sRemoteFilename), „ReceiveFile“, mTCPData, mDataStream)
			Schwaches bData (8192) als Byte
			Schwaches bytesRead als ganze Zahl = 0
			'Die Akte zurückholen
			Versuch
				Tun
					bytesRead = mDataStream.Read (bData, 0, bData.Length)
					objLocalFileStream.Write (bData, 0, bytesRead)
					Application.DoEvents ()
				Schlingen sich während mDataStream.DataAvailable
				'Empfing ursprünglich Größenstörungen hier in Bezug auf den Netzstrom,
				'Methode neu geschrieben zu oben genanntem, um Ausgabe zu lösen.  BUFFSIZE war kleiner
				'als bData.
				'bytesRead = mDataStream.Read (bData, 0, BUFFSIZE)
				'Tun, während (bytesRead > 0)
				'objLocalFileStream.Write (bData, 0, bytesRead)
				'bytesRead = mDataStream.Read (bData, 0, BUFFSIZE)
				'Application.DoEvents ()
				'Schleife
			Fang ex als Ausnahme
				DBGeneralError („FTP.ReceiveFile“, Err.GetException ())
				objLocalFileStream.Close ()
				objLocalFileStream = nichts
				mDataStream.Close ()
				mDataStream = nichts
				mTCPData.Close ()
				mTCPData = nichts
				Thread.Sleep (400)
				sOut = ReadReply ()
				'Wenn wir hier erhalten haben, sind wir ausgefallen.
				Rückholfalsches
			Enden-Versuch
			objLocalFileStream.Close ()
			objLocalFileStream = nichts
			mDataStream.Close ()
			mDataStream = nichts
			mTCPData.Close ()
			mTCPData = nichts
			Thread.Sleep (400)
			sOut = ReadReply ()
			'Wenn wir hier erhalten haben, sollten wir gut sein.
			Rückhol ausrichten
		Funktion beenden

		Sub ReadyDataSocketAndSendCommand (ByVal strCommand als Schnur, ByVal strMethodName als Schnur, ByRef mTCPData als TcpClient, ByRef mDataStream als NetworkStream)
			sOut als Schnur verdunkeln
			strIPAddress als Schnur verdunkeln

			Wenn (nicht bConnectionOpen) dann
				Wurf neues FtpClientException (0, strMethodName u. vbCrLf u. „Anschluss nicht geöffnet“)
			Beenden wenn
			'
			'Passiven Modus einstellen
			'
			'Passiver Modus öffnet den Anschluss auf dem Ferncomputer und geht zurück ()
			'eine zu verwenden Anschlussnummer. Später verursacht dieses Mitteilung 125. Keine Sorgen! ()
			'Das ist, was geschehen soll.
			'
			SendFTPCommand („PASV“)
			sOut = ReadReply ()
			Wenn nicht ReplyContains („227“, sOut, strErrorCode, strErrorMessage) dann
				Neues FtpClientException (CInt (strErrorCode), „PASV“ u. vbCrLf u. strErrorMessage) werfen
			Beenden wenn
			ParsePASVResult (sOut, strIPAddress, Hafen)
			Application.DoEvents ()
			'
			'Öffnen eine Einfaßung
			'
			Versuch
				mTCPData = neues TcpClient (strIPAddress, Hafen)
			Fang ex als Ausnahme
				Wurf neues FtpClientException (0, „geöffnete Einfaßung“ u. vbCrLf u. strIPAddress u.“ „u. Port.ToString u. vbCrLf u. ex. Mitteilung)
			Enden-Versuch
			mTCPData.ReceiveBufferSize = BUFFSIZE
			mTCPData.SendBufferSize = BUFFSIZE
			Versuch
				mDataStream = mTCPData.GetStream ()
			Fang ex als Ausnahme
				Wurf neues FtpClientException (0, „GetStream“ u. vbCrLf u. strIPAddress u.“ „u. Port.ToString u. vbCrLf u. ex. Mitteilung)
			Enden-Versuch
			'Den ftp-Befehl zum ftp server schicken
			SendFTPCommand (strCommand)
			sOut = ReadReply ()
			'Wir erhalten entweder eine Bestätigung des Downloads oder eine Fehlermeldung ()
			Wenn nicht ReplyContains („150“, sOut, strErrorCode, strErrorMessage) AndAlso nicht ReplyContains („125“, sOut, strErrorCode, strErrorMessage) dann
				Neues FtpClientException (CInt (strErrorCode), strCommand u. vbCrLf u. strErrorMessage) werfen
			Beenden wenn
		Unterseeboot beenden

Antwort : Ftp und System.Net.Sockets.NetworkStream Elende

Dissable ALLE Aussichtsteckverbindungen und -zusätze für einen Tag oder zwei und sehen, wenn dieses das Korruptionsproblem kuriert. Häufig liegt Korruption an den incompatable Steckverbindungen.
Weitere Lösungen  
 
programming4us programming4us