TCP/IP Dateien senden

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von gfcwfzkm.

    TCP/IP Dateien senden

    Hi,

    ich bin nun dabei, über TCP/IP dateien zu senden, das auch gut klappt.
    Das Problem: Nur kleine Textdokumente kann ich erfolgreich senden, was grösseres funzt gar net.

    Meine Frage:

    Wie kann ich die Datei anständig splitten, und diese wieder fein zusammenbauen?
    Im Moment verwende ich folgenden Code:

    VB.NET-Quellcode

    1. 'Bei Falls der Empfangene Text mit /file startet...
    2. ElseIf s.StartsWith("/file ") Then
    3. If CheckBox3.Checked = True Then
    4. s.Replace(0, 5)
    5. Call Datei_empfangen(s)
    6. Else : End If
    7. Else
    8. '**************************************
    9. Sub Datei_empfangen(ByVal post As String)
    10. Try
    11. post = post.Replace(TextBox3.Text & "|", "")
    12. Dim splitten As String() = post.Split(Convert.ToChar("|"))
    13. Dim username As String = splitten(0).Replace(splitten(1), "")
    14. Dim file1 As String = splitten(1).Replace(splitten(0), "")
    15. Dim filename As String = file1.Replace(splitten(2), "")
    16. Dim daten1 As String = splitten(2).Replace(splitten(1), "")
    17. Dim daten As String = splitten(2)
    18. Dim buffer() As Byte = Convert.FromBase64String(daten)
    19. File.WriteAllBytes(My.Application.Info.DirectoryPath + "\" + filename, buffer)
    20. Call Benachrichtigung("[" & username & "] hat dir " & filename & " geschickt. Du findest die Datei im Ordner dieses Programmes.")
    21. Catch ex As Exception : End Try
    22. End Sub
    23. Private Sub TextBox4_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox4.TextChanged
    24. If File.Exists(TextBox4.Text) = True Then
    25. Dim finfo As New FileInfo(TextBox4.Text)
    26. Label6.Text = "Name: " + finfo.Name
    27. Label7.Text = "Größe: " + finfo.Length.ToString + " B"
    28. Label8.Text = "Type: " + finfo.Extension
    29. Else
    30. Label6.Text = "Pfad nicht vorhanden"
    31. Label7.Text = "Pfad nicht vorhanden"
    32. Label8.Text = "Pfad nicht vorhanden"
    33. End If
    34. End Sub
    35. Sub filesend()
    36. If Not TextBox4.Text = Nothing Or TextBox5.Text = Nothing Or Not ListBox1.Items.Contains(TextBox5.Text) = Nothing Then
    37. Dim finfo As New FileInfo(TextBox4.Text)
    38. Dim buffer() As Byte = File.ReadAllBytes(TextBox4.Text)
    39. streamw.WriteLine("/file " & TextBox5.Text & "|" & TextBox3.Text & "|" + finfo.Name & "|" + Convert.ToBase64String(buffer))
    40. Me.Height = 246
    41. RichTextBox1.Text = RichTextBox1.Text & "Datei " & finfo.Name & " (" & finfo.Length.ToString & ") wurde an " & TextBox5.Text & " gesendet!"
    42. TextBox5.Clear()
    43. TextBox4.Clear()
    44. Label6.Text = "FileInfo"
    45. Label7.Text = "FileInfo"
    46. Label8.Text = "FileInfo"
    47. streamw.WriteLine("Datei wird gesendet...")
    48. End If ' + ";" + finfo.Length.ToString + ";" + finfo.Extension
    49. End Sub


    Wie könnte ich dort fein eben grössere Dateien senden? Oder habe ich gar eine schlechte Methode?

    mfg

    gfc
    Sry, konnte aber mit beiden Codes Wenig anfangen, da mein Ziel ist, das der Client nicht irgendwie speziel nen Port freischalten muss, sondern alles über den Server Läuft (wie bei mir xD)

    Im Prinzip möchte ich ja nur wissen, wie ich die Datei splitten & senden kann.
    Aber das ähnlich wie man Text sendet (TCP/IP Multiserver von kevin), also Weiterleitung, damit der Client nix mehr machen muss.

    Ist "ReadAllBytes und WriteAllBytes" keine so gute idee?

    mfg