Pytanie : FTP i System.Net.Sockets.NetworkStream niedola

Cześć networkstream,

I am jaki spojrzenie lubić problem między mój tłumiący rozmiar i networkstream.  I naprawdę móc tell.

Currently, I być pluskwa naprawianie i zastosowanie który zaczynać troszkę loopy.  The zastosowanie główny funkcja być FTP serwer i upload/ściąganie różnorodny kartoteka różnorodny rozmiar.  The kartoteka być EDI dane kartoteka dla klient.  Ono pracować (nieco) i I myśleć że ono móc the metodologia wśród the FTP klasa I być using.

More specyficznie odnośnie aportowy kartoteka od the FTP serwer omawiany.  I mówić odbojnica ponieważ the sendfile i getfilelist funkcja pracować bez hitch.

The zagadnienie I mieć być że the kartoteka tylko ściągać the tylko rozmiar the odbojnica i najwyraźniej nie dalej.  I dostawać wyjątek z pamięć wyjątek.  The jedyny istny błąd I dostawać być dostawać:

07/08/2010 12:02: 20.6272 550 The precyzować sieć imię być już nie available.

I mówić że the kartoteka być ściąganie the tłumiący rozmiar tylko ponieważ I móc wewnątrz i mój tłumiący rozmiar i tylko odzyskiwać ten kwota dane zanim the sieć związek zamykać the FTP server.

Any pomoc być ogromnie appreciated.

-saige-
(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 Jako Integer = 4096

		Przyjaciel Funkcja ReceiveFile (ByVal sLocalFilename Sznurek, ByVal sRemoteFilename Jako Sznurek, ByVal XferMode Jako TransferMode) Boolowski
			Ciemnawy objLocalFileStream Jako FileStream
			Ciemnawy mTCPData Jako Nowy TcpClient
			Ciemnawy mDataStream Jako NetworkStream
			Ćmić Port Jako Integer = 20
			Ćmić strIPAddress Sznurek
			Ćmić sOut Jako Sznurek = ""

			Jeżeli (bConnectionOpen) Wtedy
				Rzut Nowy FtpClientException ((0), "ReceiveFile" & vbCrLf & "Związek otwarty")
			Kończyć Jeżeli
			Próba
				objLocalFileStream = Nowy FileStream (sLocalFilename, FileMode.Create, FileAccess.ReadWrite, FileShare.Read, BUFFSIZE, Fałszywy)
			Chwyt fileNotFoundException Jako FileNotFoundException
				Rzut Nowy FtpClientException ((0), "Otwarty Lokalny Kartoteka - Kartoteka Znajdować (" & vbCrLf & sLocalFilename & vbCrLf & znajdować. Wiadomość)
			Chwyt directoryNotFoundException Jako DirectoryNotFoundException
				Rzut Nowy FtpClientException ((0), "Otwarty Lokalny Kartoteka - Książka telefoniczna Znajdować" & vbCrLf & sLocalFilename & vbCrLf & znajdować. Wiadomość)
			Chwyt securityException Jako SecurityException
				Rzut Nowy FtpClientException ((0), "Otwarty Lokalny Kartoteka" & vbCrLf & sLocalFilename & vbCrLf & lokalny. Wiadomość)
			Chwyt unauthorizedAccessException Jako UnauthorizedAccessException
				Rzut Nowy FtpClientException ((0), "Otwarty Lokalny Kartoteka" & vbCrLf & sLocalFilename & vbCrLf & lokalny. Wiadomość)
			Chwyt wyjątek Jako Wyjątek
				Rzut Nowy FtpClientException ((0), "Otwarty Lokalny Kartoteka" & vbCrLf & sLocalFilename & vbCrLf & lokalny. Wiadomość)
			Końcówka Próba
			'Set przeniesienie tryb
			Wybrany Skrzynka XferMode
				Skrzynka TransferMode.Ascii
					SendFTPCommand ("PISAĆ NA MASZYNIE A")
					sOut = ReadReply ()
				Skrzynka TransferMode.Binary
					SendFTPCommand ("TYP I")
					sOut = ReadReply ()
			Końcówka Wybiórka
			Application.DoEvents ()
			'
			'
			Wywoławczy ReadyDataSocketAndSendCommand ("RETR" & Path.GetFileName (sRemoteFilename), "ReceiveFile", mTCPData, mDataStream)
			Ciemnawy bData (8192) Jako Bajt
			Ciemnawy bytesRead Jako Integer = (0)
			'Odzyskiwać the kartoteka
			Próba
				
					bytesRead = mDataStream.Read (bData, (0), bData.Length)
					objLocalFileStream.Write (bData, (0), bytesRead)
					Application.DoEvents ()
				Zapętlać Podczas Gdy mDataStream.DataAvailable
				'Oryginalnie otrzymywać wielkościowy błąd tutaj odnośnie the sieć strumień,
				'metoda przepisywać above zagadnienie.  BUFFSIZE być mały
				'bData.
				'bytesRead = mDataStream.Read (bData, (0), BUFFSIZE)
				'Robić Podczas Gdy (bytesRead > (0))
				'objLocalFileStream.Write (bData, (0), bytesRead)
				'bytesRead = mDataStream.Read (bData, (0), BUFFSIZE)
				'Application.DoEvents ()
				'Pętla
			Chwyt wyjątek Jako Wyjątek
				DBGeneralError ("FTP.ReceiveFile", Err.GetException ())
				objLocalFileStream.Close ()
				objLocalFileStream = Nic
				mDataStream.Close ()
				mDataStream = Nic
				mTCPData.Close ()
				mTCPData = Nic
				Thread.Sleep (400)
				sOut = ReadReply ()
				'Jeżeli my dostawać tutaj, my nie udać się.
				Powrotny Fałszywy
			Końcówka Próba
			objLocalFileStream.Close ()
			objLocalFileStream = Nic
			mDataStream.Close ()
			mDataStream = Nic
			mTCPData.Close ()
			mTCPData = Nic
			Thread.Sleep (400)
			sOut = ReadReply ()
			'Jeżeli my dostawać tutaj, my musieć dobry.
			Powrotny Prawdziwy
		Końcówka Funkcja

		Okręt podwodny ReadyDataSocketAndSendCommand (ByVal strCommand Jako Sznurek, ByVal strMethodName Sznurek, ByRef mTCPData Jako TcpClient, ByRef mDataStream Jako NetworkStream)
			Ciemnawy sOut Sznurek
			Ciemnawy strIPAddress Sznurek

			Jeżeli (bConnectionOpen) Wtedy
				Rzut Nowy FtpClientException ((0), strMethodName & vbCrLf & "Związek otwarty")
			Kończyć Jeżeli
			'
			'Set Bezwolny Tryb
			'
			'Bezwolny tryb otwierać the związek na the daleki komputer i powrót ()
			'portowy liczba. Opóźniony, wiadomość powodować wiadomość 125. Żadny zmartwienie! ()
			'Który być ' przypuszczać.
			'
			SendFTPCommand ("PASV")
			sOut = ReadReply ()
			Jeśli nie ReplyContains ("227", sOut, strErrorCode, strErrorMessage) Wtedy
				Rzucać Nowy FtpClientException (CInt (strErrorCode), "PASV" & vbCrLf & strErrorMessage)
			Kończyć Jeżeli
			ParsePASVResult (sOut, strIPAddress, Port)
			Application.DoEvents ()
			'
			'Otwierać nasadka
			'
			Próba
				mTCPData = Nowy TcpClient (strIPAddress, Port)
			Chwyt wyjątek Jako Wyjątek
				Rzut Nowy FtpClientException ((0), "Otwarty Nasadka" & vbCrLf & strIPAddress &" "& Port.ToString & vbCrLf & otwarty. Wiadomość)
			Końcówka Próba
			mTCPData.ReceiveBufferSize = BUFFSIZE
			mTCPData.SendBufferSize = BUFFSIZE
			Próba
				mDataStream = mTCPData.GetStream ()
			Chwyt wyjątek Jako Wyjątek
				Rzut Nowy FtpClientException ((0), "GetStream" & vbCrLf & strIPAddress &" "& Port.ToString & vbCrLf & (0). Wiadomość)
			Końcówka Próba
			'Wysyłać the FTP Rozkaz the FTP Serwer
			SendFTPCommand (strCommand)
			sOut = ReadReply ()
			'My dostawać lub potwierdzenie the ściąganie lub błąd Wiadomość ()
			Jeśli nie ReplyContains ("150", sOut, strErrorCode, strErrorMessage) AndAlso Nie ReplyContains ("125", sOut, strErrorCode, strErrorMessage) Wtedy
				Rzucać Nowy FtpClientException (CInt (strErrorCode), strCommand & vbCrLf & strErrorMessage)
			Kończyć Jeżeli
		Kończyć Okręt podwodny

Odpowiedź : FTP i System.Net.Sockets.NetworkStream niedola

Dissable WSZYSTKIE światopogląd gniazdko wtyczkowe i dodawać ons dla dzień lub dwa i widzieć jeżeli dwa leczyć the korupcja problem. Często korupcja być należny incompatable gniazdko wtyczkowe.
Inne rozwiązania  
 
programming4us programming4us