Vraag : Narigheden FTP en System.Net.Sockets.NetworkStream

Hello allen,

I am wat hebben als een probleem tussen mijn buffergrootte en networkstream kijkt.  Ik kan niet werkelijk tell.

Currently, ben ik insecten het bevestigen en toepassing die is begonnen te handelen een weinig geschift.  De toepassingen de hoofdfunctie met een server van FTP te verbinden en te uploaden/is diverse dossiers van diverse grootte downloaden.  De dossiers zijn EDI- gegevensdossiers voor een cliënt.  Het werkt (enigszins) en ik denk dat het de methodologie kan zijn binnen de klasse van FTP ik using.

More specifiek met achting ben aan het terugwinnen van dossiers van de server van FTP in kwestie.  Ik zeg dit omdat het werk van sendfile en getfilelistfuncties zonder een kwestie hitch.

The die ik is heb gehad dat de dossiers slechts aan de maximum grootte van de buffer en blijkbaar geen verder downloaden.  Ik krijg geen uit geheugenuitzonderingen.  De enige echte fout ik krijg is dit: 12:02

07/08/2010: 20.6272 550 de gespecificeerde netwerknaam niet meer available.

I is zeggen dat de dossiers aan de buffergrootte downloaden slechts omdat ik binnen kan gaan en mijn buffergrootte veranderen en slechts zal terugwinnen dat de hoeveelheid gegevens alvorens de netwerkverbinding door de hulp wordt gesloten/>
Any van FTP server.

-saige-
zou zijn
" codeBody "
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:
36:
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 Geheel = 4096

		De Functie ReceiveFile van de vriend (ByVal sLocalFilename als Koord, ByVal sRemoteFilename als Koord, ByVal XferMode als TransferMode) zoals Van Boole
			Schemerige objLocalFileStream als FileStream
			Schemerige mTCPData als Nieuwe TcpClient
			Schemerige mDataStream als NetworkStream
			Schemerige Haven als Geheel = 20
			Schemerige strIPAddress als Koord
			Schemerige sOut als Koord = ""

			Als (niet bConnectionOpen) toen
				Werp Nieuwe FtpClientException (0, „ReceiveFile“ & vbCrLf & „niet open Verbinding“)
			Beëindig als
			Probeer
				objLocalFileStream = Nieuwe FileStream (sLocalFilename, Valse FileMode.Create, FileAccess.ReadWrite, FileShare.Read, BUFFSIZE,)
			Vangst ex als FileNotFoundException
				Werp Nieuwe FtpClientException (0, „Open Lokaal Dossier - Gevonden niet Dossier (“ & vbCrLf & sLocalFilename & vbCrLf & ex. Bericht)
			Vang ex als DirectoryNotFoundException
				Werp Nieuwe FtpClientException (0, „Open Lokaal Dossier - Gevonden niet Folder“ & vbCrLf & sLocalFilename & vbCrLf & ex. Bericht)
			Vang ex als SecurityException
				Werp Nieuwe FtpClientException (0, „Open Lokaal Dossier“ & vbCrLf & sLocalFilename & vbCrLf & ex. Bericht)
			Vang ex als UnauthorizedAccessException
				Werp Nieuwe FtpClientException (0, „Open Lokaal Dossier“ & vbCrLf & sLocalFilename & vbCrLf & ex. Bericht)
			Vang ex als Uitzondering
				Werp Nieuwe FtpClientException (0, „Open Lokaal Dossier“ & vbCrLf & sLocalFilename & vbCrLf & ex. Bericht)
			Het eind probeert
			'Plaats transfer-mode
			Selecteer Geval XferMode
				Geval TransferMode.Ascii
					SendFTPCommand („TYP A“)
					sOut = ReadReply ()
				Geval TransferMode.Binary
					SendFTPCommand („TYPE I“)
					sOut = ReadReply ()
			Uitgezocht eind
			Application.DoEvents ()
			'
			'
			Vraag ReadyDataSocketAndSendCommand („RETR“ & Path.GetFileName (sRemoteFilename), „ReceiveFile“, mTCPData, mDataStream)
			Schemerige bData (8192) als Byte
			Schemerige bytesRead als Geheel = 0
			'Win het dossier terug
			Probeer
				
					bytesRead = mDataStream.Read (bData, 0, bData.Length)
					objLocalFileStream.Write (bData, 0, bytesRead)
					Application.DoEvents ()
				Lijn terwijl mDataStream.DataAvailable
				'Ontving hier oorspronkelijk groottefouten met achting aan de netwerkstroom,
				'methode die aan bovengenoemd wordt herschreven kwestie op te lossen.  BUFFSIZE was kleiner
				'dan bData.
				'bytesRead = mDataStream.Read (bData, 0, BUFFSIZE)
				'Doe terwijl (bytesRead > 0)
				'objLocalFileStream.Write (bData, 0, bytesRead)
				'bytesRead = mDataStream.Read (bData, 0, BUFFSIZE)
				'Application.DoEvents ()
				'Lijn
			Vangst ex als Uitzondering
				DBGeneralError („FTP.ReceiveFile“, Err.GetException ())
				objLocalFileStream.Close ()
				objLocalFileStream = niets
				mDataStream.Close ()
				mDataStream = niets
				mTCPData.Close ()
				mTCPData = niets
				Thread.Sleep (400)
				sOut = ReadReply ()
				'Als wij hier zijn geworden, hebben wij ontbroken.
				Valse terugkeer
			Het eind probeert
			objLocalFileStream.Close ()
			objLocalFileStream = niets
			mDataStream.Close ()
			mDataStream = niets
			mTCPData.Close ()
			mTCPData = niets
			Thread.Sleep (400)
			sOut = ReadReply ()
			'Als wij hier zijn geworden, zouden wij goed moeten zijn.
			Ware terugkeer
		De Functie van het eind

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

			Als (niet bConnectionOpen) toen
				Werp Nieuwe FtpClientException (niet open 0, strMethodName & vbCrLf & „Verbinding“)
			Beëindig als
			'
			'Plaats Passieve Wijze
			'
			De 'passieve wijze opent de verbinding op de verre computer en keert terug ()
			een 'havenaantal aan gebruik. Later, veroorzaakt dit bericht 125. Geen zorgen! ()
			'Dat is wat verondersteld om is te gebeuren.
			'
			SendFTPCommand („PASV“)
			sOut = ReadReply ()
			Als niet ReplyContains („227“, sOut, strErrorCode, strErrorMessage) Dan
				Werp Nieuwe FtpClientException (CInt (strErrorCode), „PASV“ & vbCrLf & strErrorMessage)
			Beëindig als
			ParsePASVResult (sOut, strIPAddress, Haven)
			Application.DoEvents ()
			'
			'Open een contactdoos
			'
			Probeer
				mTCPData = Nieuwe TcpClient (strIPAddress, Haven)
			Vangst ex als Uitzondering
				Werp Nieuwe FtpClientException (0, „Open Contactdoos“ & vbCrLf & strIPAddress &“ „& Port.ToString & vbCrLf & ex. Bericht)
			Het eind probeert
			mTCPData.ReceiveBufferSize = BUFFSIZE
			mTCPData.SendBufferSize = BUFFSIZE
			Probeer
				mDataStream = mTCPData.GetStream ()
			Vangst ex als Uitzondering
				Werp Nieuwe FtpClientException (0, „GetStream“ & vbCrLf & strIPAddress &“ „& Port.ToString & vbCrLf & ex. Bericht)
			Het eind probeert
			'Verzend het Bevel van FTP naar de Server van FTP
			SendFTPCommand (strCommand)
			sOut = ReadReply ()
			'Wij zullen of een bevestiging van de download of een Foutenmelding krijgen ()
			Als niet ReplyContains („150“, sOut, strErrorCode, strErrorMessage) AndAlso niet ReplyContains („125“, sOut, strErrorCode, strErrorMessage) Dan
				Werp Nieuwe FtpClientException (CInt (strErrorCode), strCommand & vbCrLf & strErrorMessage)
			Beëindig als
		Beëindig Sub

Antwoord : Narigheden FTP en System.Net.Sockets.NetworkStream

Dissable AL vooruitzichten plugins en voegt ons voor een dag of twee toe en ziet of geneest dit het corruptieprobleem. Vaak is de corruptie toe te schrijven aan incompatable plugins.
Andere oplossingen  
 
programming4us programming4us