Datentransfer zwischen zwei PC´s über einen FTP-Server

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von Matze396.

    Datentransfer zwischen zwei PC´s über einen FTP-Server

    hallo. möchte gerne in mein messenger ein datentransfer einbauen.
    das so ähnlich läuft wie bei icq usw.
    Der eine user wählt eine datei aus, die er gerne seinem chatpartner schicken möchte.
    Wenn er dann auf senden drückt, soll die datei entweder direkt oder über einen FTP-Server an ihn geschickt werden.
    Aber so, das der empfänger nicht erst auf nen link klicken muss um an die datei zu kommen.
    Ist das irgendwie möglich umzusetzen ?
    Konkret, es gibt keine direkte Lösung dafür. Ich habe mal eine Lösung mit einem FTP-Server [nicht sicher und performance!]
    Du musst halt in der AddItem-Sub dafür sorgen, (und auch im Button-Klick zum senden) ob die Nachricht z.B. mit |file anfängt. Wenn ja, splitte es und danach lade es hoch. Wenn es hochgeladen ist, ein Signal an den anderen Client senden
    wieso überhaupt per ftp? das ist ein ziemlicher umweg.

    einfacher geht es so:
    Datei als Byte-Array einlesen und anschließend zu Objekttyp "String" konvertieren. (Stichwort ToBase64String)
    dannach kannst du den string einfach als normale "Text message" senden (ich vermute mal das du das ganze über tcp abwickelst), und der client kann dann diesen string wieder als byte-array convertieren (Stichwort FromBase64String)

    das konvertieren ist zwar recht performance unfreundlich, aber solange du damit nicht gleich mehrere GB versendest ist das wohl immer noch die beste lösung
    Ja, wenn du dateien verschlüssen willst, geht das folgendermaßen :

    Wenn du Die Datei, die du senden möchtest in einer listbox stehen hasst, machst du es mit dem "ToBase64String" so:

    VB.NET-Quellcode

    1. Dim base64 As String
    2. base64 = Convert.ToBase64String(File.ReadAllBytes(ListBox1.SelectedItem))

    ansonstesn tauscht du das ListBox1.SelectedItem einfach gegen das ein, was du hald grad brauchst
    und das "FromBase64String", geht so :

    VB.NET-Quellcode

    1. Dim base64 As String = "" ' base64 ist der text, der wieder i eine datei umbewandelt werden soll :D
    2. IO.File.WriteAllBytes("C:\", Convert.FromBase64String(Base64))
    'weg zur zieldatei, mit endung

    ich hoffe ich konnte helfen:)
    ~MFG~
    kannst uja mal danke sagen, wenne lustz hast :D
    Base64? Verschlüsseln? Es wundert mich, dass der Server vor lauter instabilem Halbwissen noch nicht implodiert ist :pinch:
    Via FTP geht sowas zwar, ist aber, wie schon gesagt wurde, ein unglaublicher Umweg. Base64 auch, da das die zu übertragende Dateimenge ca. vervierfacht.
    Such dir das Multiserver-Tutorial raus und arbeite damit.
    Ist doch eigentlich ganz einfach?

    VB.NET-Quellcode

    1. Dim DateiZumSenden as Byte() = IO.File.ReadAllBytes("C:\Datei.dll")


    Den Byte Array schickst du dann mittels deinem Stream von ClientA zu ClientB.

    DA musst du nichts zu einem String ändern und dann wieder zu Bytes.
    Machs doch einfach über nen Upload und Download

    Webclient aufrufen:

    VB.NET-Quellcode

    1. Dim Webclient As New Net.WebClient
    2. Webclient.Credentials = New Net.NetworkCredential("FTP-Username", "FTP-Passwort")


    Upload:

    VB.NET-Quellcode

    1. Webclient.UploadString("Server-URL", Daten die geuplodatet werden sollen)


    Download:

    VB.NET-Quellcode

    1. RichTextBox1.Text = Webclient.DownloadString("Server-URL")


    und pack den Download in nen Timer...das er ständig aktualisiert.

    Upload= Alter Text + Vbnewline +neuer Text (Da ja sonst alles überschrieben wird)