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:
|
" codeBody "
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
|