Datenübertragungsclient soll Name senden - Problem

  • VB.NET

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

    Datenübertragungsclient soll Name senden - Problem

    Hi,

    ich habe ein tutorial gefunden, womit man recht einfach und unkompliziert Daten senden kann. Jedoch muss ich dem Server irgendwie bescheidsagen, wie die Datei heisst( z.B. Hoi.exe), da sonst ich nur eine Datei(.) machen kann, um man nachhaltig die endung hinzufügen muss...

    Meine frage: Wie kann ich dem Server das .SaveFileName senden, ohne das sofort ein Error kommt
    Habs schon mit FTP versucht, aber FTP ist einfach zu langsam...
    SERVER:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Imports System.IO
    2. Imports System.Net
    3. Imports System.Net.Sockets
    4. Public Class Form1
    5. Private filePath As String
    6. Dim Pfad As String
    7. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    8. Button2.Enabled = False
    9. 'Label1.Text = "Warten auf Datei-Namen"
    10. Call Starter()
    11. End Sub
    12. ' Private Sub Checker()
    13. 'Dim wc As New Net.WebClient
    14. ' wc.Credentials = New NetworkCredential("USER", "PW")
    15. ' Pfad = wc.DownloadString("ftp://Hier könnte ihre Werbung stehen.com/Dateienübertragung.txt")
    16. ' If Pfad = "" Then
    17. ' Call Checker()
    18. ' Else
    19. ' Call Starter()
    20. ' End If
    21. ' End Sub
    22. Private Sub Starter()
    23. filePath = "C:\NewFile." ' & Pfad
    24. Dim listenThread As Threading.Thread = New Threading.Thread(AddressOf ListenSub)
    25. listenThread.IsBackground = True
    26. listenThread.Start()
    27. End Sub
    28. Private Sub ListenSub()
    29. Dim server As New TcpListener(IPAddress.Any, 8005)
    30. server.Start()
    31. Try
    32. While True
    33. Dim c As TcpClient = server.AcceptTcpClient
    34. Dim s As NetworkStream = c.GetStream
    35. FileOpen(1, filePath, OpenMode.Binary)
    36. Dim buffer(1024 - 1) As Byte
    37. Do While True
    38. Dim bytesread As Integer = s.Read(buffer, 0, buffer.Length)
    39. If bytesread = 0 Then Exit Do
    40. FilePut(1, buffer)
    41. Loop
    42. FileClose(1)
    43. s.Close()
    44. c.Close()
    45. End While
    46. Catch ex As Exception
    47. MsgBox("Fehler ist aufgetreten:" & vbCr & ex.ToString, MsgBoxStyle.Critical, "Error")
    48. End Try
    49. Button2.Enabled = True
    50. MsgBox("Die Datei wurde auf C:\ gespeichert. Klicken sie die Datei mit Rechtsklick und gehen sie auf eigenschaften. Fügen sie nun die Endung (z.B. .zip, .exe, ...) hinzu. Ändern sie es dann nach ihnren Vorstellungen.")
    51. End Sub
    52. End Class

    CLIENT:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. 'Form1.Textbox2.Text = IP-Adresse
    2. Imports System.Net
    3. Imports System.Net.Sockets
    4. Imports System.IO
    5. Imports System.Threading
    6. Public Class Form2
    7. Dim filepath As String
    8. Dim döner As String
    9. Delegate Sub nan()
    10. Private Sub SendSub()
    11. Dim cli As New TcpClient
    12. cli.Connect(Form1.TextBox1.Text, 8005)
    13. Try
    14. Dim nstm As Stream = cli.GetStream()
    15. Dim fstm As Stream = New FileStream(filepath, FileMode.Open, FileAccess.Read)
    16. Dim buffer(1024 - 1) As Byte
    17. Do While True
    18. Dim bytesRead As Integer = fstm.Read(buffer, 0, buffer.Length)
    19. If bytesRead = 0 Then Exit Do
    20. nstm.Write(buffer, 0, bytesRead)
    21. nstm.Flush()
    22. Loop
    23. cli.Close()
    24. nstm.Close()
    25. fstm.Close()
    26. MsgBox("Die Datein wurde erfolgreich gesendet.", MsgBoxStyle.Exclamation, "Gesendet")
    27. Catch ex As Exception
    28. MsgBox("Fehler ist aufgetreten:" & vbCr & ex.ToString, MsgBoxStyle.Critical, "Error")
    29. End Try
    30. End Sub
    31. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    32. Button2.Enabled = False
    33. ' Dim wc As New Net.WebClient
    34. ' wc.Credentials = New NetworkCredential("User", "PW")
    35. ' wc.UploadString("ftp://Hier könnte ihre Werbung stehen.com/Dateienübertragung.txt", döner)
    36. filepath = TextBox1.Text
    37. Dim sendThread As New System.Threading.Thread(AddressOf SendSub)
    38. sendThread.IsBackground = True
    39. sendThread.Start()
    40. End Sub
    41. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    42. TextBox1.Text = ""
    43. Dim fdlg As OpenFileDialog = New OpenFileDialog()
    44. fdlg.Title = "Datei senden..."
    45. fdlg.InitialDirectory = "c:\"
    46. fdlg.Filter = "Alle Dateien (*.*)|*.*|Alle Dateien (*.*)|*.*"
    47. fdlg.FilterIndex = 2
    48. fdlg.RestoreDirectory = True
    49. If fdlg.ShowDialog() = DialogResult.OK Then
    50. TextBox1.Text = fdlg.FileName
    51. End If
    52. ' döner = fdlg.SafeFileName
    53. End Sub
    54. Private Sub Form2_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
    55. Form1.Close()
    56. End Sub
    57. End Class


    könnt ihr mir weiterhelfen ;(

    mfg
    Wiki:
    Mit dem englischen Lehnwort Tutorial [tuːˈtɔːɹiəl] (lat. tueri „beschützen, bewahren, pflegen“) bezeichnet man im Computerjargon eine schriftliche oder filmische Gebrauchsanleitung für ein Computerprogramm, in der die Bedienung und die Funktionen anhand von (teils bebilderten) Beispielen Schritt für Schritt erklärt werden.


    Du hast kein "Tutorial" gefunden (es fehlt nämlich jegliche Erklärung), sondern eine Abschreibvorlage. Du hast keine Ahnung was "dein" Programm eigentlich macht. Jetzt soll es was machen, was neu ist, also sollen wir das bitteschön ergänzen. Auch DAS ist nicht was mit "lernen" gemeint ist!

    BTW:

    VB.NET-Quellcode

    1. FileOpen(1, filePath, OpenMode.Binary)
    2. ...
    3. FilePut(1, buffer)

    Heißt, dass der Verfasser dieses "Tutorials" auch keine große Leuchte ist. Wahrscheinlich hat er 90% auch irgendwo abgeschrieben. Und jetzt kreist dieser Müll so lange um den Planeten bis er die ISS vom Himmel holt.


    Tu dir UND uns einen Gefallen und mach kleine, sinnvolle Schritte. Versuch jeden einzelnen Schritt zu VERSTEHEN.
    sigh

    OK: Sende den Namen der Datei und direkt im Anschluss die Datei selbst. Am einfachsten als 1-4 Zeichen ein Integer, der die Länge des Namens angibt, damit ihn der Client abtrennen kann. Also:
    00 00 00 01 41 11 22 33 44 55 55 usw