BlackBoard » Design, Programmierung & Entwicklung » Programmieren » VB FTP-Verbindung herstellen » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen FTP-Verbindung herstellen
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
kilone kilone ist männlich
Senior Member


images/avatars/avatar-131.gif

Dabei seit: 13.09.2001
Beiträge: 320

FTP-Verbindung herstellen       Zum Anfang der Seite springen

Hallo @ all
wie kann ich mit Visual Basic eine Ferbindung zu einem ftp aufbauen und dort dann befehle ausführen?

Please help me!! unglücklich unglücklich

__________________
Klick mich fest

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von kilone: 24.02.2003 18:26.

09.01.2003 16:08 kilone ist offline E-Mail an kilone senden Homepage von kilone Beiträge von kilone suchen
Medusa Medusa ist männlich
Senior Member


images/avatars/avatar-252.gif

Dabei seit: 10.09.2001
Beiträge: 356
Herkunft: ...von da, wo mein Haus wohnt...

      Zum Anfang der Seite springen

am einfachsten geht das mit der winsock.
dafür gibts n Steuerelement in vb.
Such mal in google nach 'vb winsock' oder sowas Augenzwinkern

__________________
Grüßle, Medi
09.01.2003 18:22 Medusa ist offline E-Mail an Medusa senden Beiträge von Medusa suchen
kilone kilone ist männlich
Senior Member


images/avatars/avatar-131.gif

Dabei seit: 13.09.2001
Beiträge: 320

Themenstarter Thema begonnen von kilone
      Zum Anfang der Seite springen

danke für den Tip werde ich mal versuchen Augenzwinkern

__________________
Klick mich fest
09.01.2003 19:04 kilone ist offline E-Mail an kilone senden Homepage von kilone Beiträge von kilone suchen
Lektor
gesperrt


Dabei seit: 27.07.2001
Beiträge: 298

      Zum Anfang der Seite springen

@Medusa: Würdeste mir ftp mit winsock-Steuerelemt
mal näher bringen? Vielleicht hab ich ja in den letzten Jahren völlige Scheiße verscriptet und habs net einmal mitbekommen.

@kilone: Verwende das Internet-Übertragung-Steuerelement (Inet)!!

(Ich setz mal nen bissel VB-Scripting-Erfahrung vorraus, wenn de schon solch eine Frage stellst!)

1. Einstellen der AccessType-Eigenschaft auf einen gültigen Proxy-Server.

2.Aufrufen der OpenURL-Methode mit einer zulässigen URL.

3.Aufrufen der Execute-Methode mit einer zulässigen URL und einem zum Protokoll passenden Befehl.

4.Verwenden der GetChunk-Methode, um Daten aus dem Puffer abzurufen.

Die Einstellungen für AccessType
Konstante/ Wert/ Beschreibung

icUseDefault/0 / (Standard) Standardeinstellungen verwenden. Das Steuerelement verwendet, die in der Registrierung gefundenen, Standardeinstellungen für den Zugriff auf das Internet.

icDirect/1 / Direkt zum Internet. Das Steuerelement hat eine direkte Verbindung zum Internet.

icNamedProxy/ 2/ Benannter Proxy-Server. Weist das Steuerelement an, den in der Proxy-Eigenschaft festgelegten Proxy-Server zu verwenden.

OpenURL-Methode (Anweisungen Open, Put und Close)
Beispiel füllt ein Byte-Datenfeld mit dem Inhalt einer Binärdatei, bevor die Daten auf einem Datenträger gespeichert werden.

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
Dim strURL As String
Dim bData() As Byte      ' Datenvariable
Dim intFile As Integer   ' FreeFile-Variable
strURL = _
"ftp://ftp.microsoft.com/Softlib/Softlib.exe"
intFile = FreeFile()      ' intFile auf eine
                        ' unbenutzte Datei setzen.
' Das Ergebnis der OpenURL-Methode wandert in das
' Byte-Datenfeld, und dieses wird dann auf Datenträger
' gespeichert.
bData() = Inet1.OpenURL(strURL, icByteArray)
Open "C:\Temp\Softlib.exe" For Binary Access Write _ 
As #intFile
Put #intFile, , bData()
Close #intFile


Execute-Methode mit dem FTP-Protokoll

Beispiele:
code:
1:
2:
Inet1.Execute "FTP://ftp.microsoft.com", _
"GET disclaimer.txt C:\Temp\Disclaimer.txt"


Execute , "CD docs\mydocs"
Execute , "CDUP"
Execute , "DELETE loesche.txt"
Execute , "DIR /mydocs"
Execute , _"GET getme.txt C:\gotme.txt"
Execute , "MKDIR /myDir"
Execute , _"PUT C:\putme.txt /putme.txt"
Execute , "PWD"
Execute , "QUIT"
Execute , _"RECV getme.txt C:\gotme.txt"
Execute , "RENAME old.txt new.txt"
Execute , "RMDIR oldDir"
Execute , _"SEND C:\putme.txt /putme.txt"
Execute "SIZE /largefile.txt"

Bsp.-Beschreibungen für execute brauch ich ja wohl nicht geben.
Falls CERN-Proxy-Server, nix mit direkte FTP-Verbindung mit der Execute-Methode,
OpenURL-Methode mit den Anweisungen Open, Put und Close verwenden.

GetChunk-Methode

Beispiel:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
Private Sub Inet1_StateChanged(ByVal State As Integer)
   Dim vtData As Variant ' Datenvariable.
   Select Case State
   ' ... Andere Fälle werden nicht gezeigt.
   Case icResponseCompleted ' 12
      ' Eine zu beschreibende Datei öffnen.
      Open txtOperation For Binary Access _
      Write As #intFile

      ' Den ersten Datenblock abrufen. HINWEIS: geben Sie
      ' ein Byte-Datenfeld an (icByteArray), um eine 
      ' Binärdatei abzurufen.
      vtData = Inet1.GetChunk(1024, icString)

      Do While LenB(vtData) > 0
         Put #intFile, , vtData
         ' Nächsten Datenblock abrufen.
         vtData = Inet1.GetChunk(1024, icString)
      Loop
      Put #intFile, , vtData
      Close #intFile
   End Select
End Sub


Anmelden bei FTP-Servern

Beispiel:

code:
1:
2:
3:
4:
5:
6:
7:
With Inet1
   .URL = "ftp://ftp.eineFTPSite.com"
   .UserName = "John Smith"
   .Password = "mAuI&9$6"
   .Execute ,"DIR"   ' Gibt den Ordner zurück.
   .Execute ,"CLOSE" ' Die Verbindung schließen.
End With


Beispiel für das Herunterladen einer Datei mit FTP:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
#include <afxinet.h>
//setzt voraus, daß Server- und Dateinamen initialisiert wurden
CInternetSession session("Meine FTP-Sitzung");
CFtpConnection* pConn = NULL;

pConn = session.GetFtpConnection(lpszServerName);
//Datei holen
if (!pConn->GetFile(pstrRemoteFile, pstrLocalFile))
   //display an error
delete pConn;
session.Close();


So keinen Bock mehr, hoffe Du hast jetzt mehr Durchblick!

Grüßle

Lektor

___________________
Wrecking Crew
01.02.2003 18:23 Lektor ist offline Beiträge von Lektor suchen
kilone kilone ist männlich
Senior Member


images/avatars/avatar-131.gif

Dabei seit: 13.09.2001
Beiträge: 320

Themenstarter Thema begonnen von kilone
      Zum Anfang der Seite springen

ja hat mir sehr weiter geholfen dnake

__________________
Klick mich fest
02.02.2003 11:39 kilone ist offline E-Mail an kilone senden Homepage von kilone Beiträge von kilone suchen
Medusa Medusa ist männlich
Senior Member


images/avatars/avatar-252.gif

Dabei seit: 10.09.2001
Beiträge: 356
Herkunft: ...von da, wo mein Haus wohnt...

      Zum Anfang der Seite springen

@Lektor:
Hab was dazu gelernt großes Grinsen
Theoretisch kann man das ja auch mit der winsock machen, was natürlich viel viel umständlicher wäre.
Ich hab in der Richtung noch net viel angestellt, aber das Inet-Dings da is ja dann ganz schön nützlich großes Grinsen

__________________
Grüßle, Medi
04.02.2003 18:29 Medusa ist offline E-Mail an Medusa senden Beiträge von Medusa suchen
Lektor
gesperrt


Dabei seit: 27.07.2001
Beiträge: 298

      Zum Anfang der Seite springen

Hi Medusa!

Und nun lernste noch etwas dazu.

Wozu benutze ich das Winsock-Steuerelement
Rest des Postings habe ich wieder gelöscht.

Deshalb muß Medusa mir jetzt ein TCP- oder UDP-Verbindungs-Grundlagen-Coding posten; oder eine Chat-Anwendung.
(Man bin ich heute wieder scheiße; aber Winsock-Steuerelement for remote-protocoll!)

Grüßle

Lektor

___________________
Wrecking Crew

Dieser Beitrag wurde 3 mal editiert, zum letzten Mal von Lektor: 07.02.2003 02:20.

07.02.2003 01:33 Lektor ist offline Beiträge von Lektor suchen
Medusa Medusa ist männlich
Senior Member


images/avatars/avatar-252.gif

Dabei seit: 10.09.2001
Beiträge: 356
Herkunft: ...von da, wo mein Haus wohnt...

      Zum Anfang der Seite springen

Zitat:
Original von Lektor
Deshalb muß Medusa mir jetzt ein TCP- oder UDP-Verbindungs-Grundlagen-Coding posten; oder eine Chat-Anwendung.

Weshalb?

Warum soll das net gehen?
Daten senden, Daten empfangen. Mehr braucht man doch net. Nur wie gesagt sind ja bei dem anderen Steuerelement wichtige Funktionen schon "vorprogrammiert", also einfach "log mich ein mit name xxx und pass yyy", und fertig.

Das is doch einfach wie html mit notepad und html mit frontpage. Naja, net ganz, aber so ähnlich

__________________
Grüßle, Medi
07.02.2003 15:55 Medusa ist offline E-Mail an Medusa senden Beiträge von Medusa suchen
Lektor
gesperrt


Dabei seit: 27.07.2001
Beiträge: 298

      Zum Anfang der Seite springen

@Medusa: Ich will Dir ja auch gar nicht auf die Füße treten.

Es gibt in god old germany nur vier Programmierer(Skripter), mit denen ich mich auf irgendwelche Diskussionen einlasse, Du gehörst mit Sicherheit nicht dazu; sorry!

Was will ich erreichen, mit welchem Aufwand?

Das Winsock-Steuerelement benutze ich für Lösungen für den einfachen Zugriff auf TCP- und UDP-Netzwerkdienste. Mit Access, VB, V C++ und V FoxPro.
Mit der Funktion des Winsock-API auf Systemebene kann ich natürlich zum Remote-Computer eine Verbindung herstellen und in beide Richtungen Daten austauschen, Recht haste da.

So nun schauen wir uns mal ein Code-Beispiel zur Umsetzung des Probs an, die uns zeigen wird, daß hier der Weg zu einer reibungslosen, unproblematischen FTP-Lösung nur schwer (umständlich) zu realisieren ist.

TCP-Server

code:
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:
Private Sub Form_Load()
' Die LocalPort-Eigenschaft auf eine ganze
' Zahl setzen. Dann die Listen-Methode aufrufen.
tcpServer.LocalPort = 1001
tcpServer.Listen 
frmClient.Show ' Das Client-Formular anzeigen.
End Sub

Private Sub tcpServer_ConnectionRequest _
(ByVal requestID As Long)
' Prüfen, ob die State-Eigenschaft des
' Steuerelements den Wert Closed (geschlossen)
' hat. Falls nicht, die Verbindung schließen,
' bevor die neue Verbindung akzeptiert wird.
If tcpServer.State <> sckClosed Then _
tcpServer.Close
' Die Anforderung mit dem Parameter
' requestID akzeptieren.
tcpServer.Accept requestID
End Sub

Private Sub txtSendData_Change()
' Das Textfeld-Steuerelement namens txtSendData 
' enthält die zu sendenden Daten. Wenn der
' Benutzer im Textfeld eine Eingabe macht, wird
' die Zeichenfolge mit Hilfe der SendData-Methode 
' gesendet.
tcpServer.SendData txtSendData.Text
End Sub

Private Sub tcpServer_DataArrival _
(ByVal bytesTotal As Long)
' Eine Variable für die eingehenden Daten deklarieren. 
' Die GetData-Methode aufrufen, und die
' Text-Eigenschaft eines Textfelds namens 
' txtOutput mit den Daten belegen.
Dim strData As String
tcpServer.GetData strData
txtOutput.Text = strData
End Sub


TCP-Client

code:
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:
Private Sub Form_Load()
   ' Das Winsock-Steuerelements heißt tcpClient.
   ' Hinweis: um einen Remote-Host anzugeben,
   ' können wir die IP-Adresse (z.B. "121.111.1.1")
   ' oder den Computernamen des Computers
   ' verwenden, wie hier von mir gezeigt.
   tcpClient.RemoteHost = "RemoteComputerName"
   tcpClient.RemotePort = 1001
End Sub

Private Sub cmdConnect_Click()
   ' Die Connect-Methode aufrufen, um einen
   ' Verbindungsaufbau zu initiieren.
   tcpClient.Connect
End Sub

Private Sub txtSendData_Change()
   tcpClient.SendData txtSend.Text
End Sub

Private Sub tcpClient_DataArrival _
(ByVal bytesTotal As Long)
   Dim strData As String
   tcpClient.GetData strData
   txtOutput.Text = strData
End Sub


Akzeptieren von mehreren Verbindungsanforderungen

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
Private intMax As Long

Private Sub Form_Load()
   intMax = 0
   sckServer(0).LocalPort = 1001
   sckServer(0).Listen
End Sub

Private Sub sckServer_ConnectionRequest _
(Index As Integer, ByVal requestID As Long)
   If Index = 0 Then
      intMax = intMax + 1
      Load sckServer(intMax)
      sckServer(intMax).LocalPort = 0
      sckServer(intMax).Accept requestID
      Load txtData(intMax)
   End If
End Sub



UDP-Peer

code:
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:
Private Sub Form_Load()
' Das Winsock-Steuerelement heißt udpPeerA
With udpPeerA
' WICHTIG: Vergess nicht, den Wert vom
' RemoteHost auf den Namen Deines Computers zu 
' setzen.
.RemoteHost= "PeerB" 
.RemotePort = 1001   ' Anschluß, zu dem
' verbunden werden soll.
.Bind 1002                ' An den lokalen
' Anschluß binden.
End With
frmPeerB.Show                 ' Zweites Formular zeigen.
End Sub

Private Sub txtSend_Change()
' Text senden, sobald er eingegeben wird.
udpPeerA.SendData txtSend.Text
End Sub

Private Sub udpPeerA_DataArrival _
(ByVal bytesTotal As Long)
Dim strData As String
udpPeerA.GetData strData
txtOutput.Text = strData
End Sub


Zweiten UDP-Peer

code:
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:
Private Sub Form_Load()
' Das Steuerelement heißt udpPeerB.
With udpPeerB
' WICHTIG: Vergesse nicht, den Wert von
' RemoteHost auf den Namen Deines Computers zu 
' setzen.
.RemoteHost= "PeerA"
.RemotePort = 1002    ' Anschluß, zu dem
' verbunden werden soll.
.Bind 1001                ' An den lokalen
' Anschluß binden.
End With
End Sub

Private Sub txtSend_Change()
' Text senden, sobald er eingegeben wird.
udpPeerB.SendData txtSend.Text
End Sub

Private Sub udpPeerB_DataArrival _
(ByVal bytesTotal As Long)
Dim strData As String
udpPeerB.GetData strData
txtOutput.Text = strData
End Sub


Desweiteren sollte man Unterschiede in der Bind-Methode bei TCP und UDP für RemoteHost; RemotePort und LocalPort nicht vergessen.

Warum EINFACH, wenns auch SCHWER geht?
@Medusa: Aber Du hast es ja vollkommen richtig erkannt, deshalb mach ich dir ja auch 0-Vorwurf; sollte halt nen Vergleich werden, mit Lernfaktor.
Deshalb hatte ich die Lösung gelöscht und dachte Du bist mal mit Coden dran.


PS: Wo ist eigentlich Euer Sinn für persönliche Freundlichkeit geblieben, Hallo; Gruß?

Grüßle

Lektor

____________________
Wrecking Crew

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Lektor: 22.02.2003 03:09.

20.02.2003 21:35 Lektor ist offline Beiträge von Lektor suchen
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
BlackBoard » Design, Programmierung & Entwicklung » Programmieren » VB FTP-Verbindung herstellen

Forensoftware: Burning Board 2.3.6, entwickelt von WoltLab GmbH