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
|