Dateien über TCP IP verschicken und empfangen

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von Gelöschter Benutzer.

    Dateien über TCP IP verschicken und empfangen

    Hallo,

    ich habe folgendes Problem. und zwar habe ich es geschafft Dateien per TCP IP zu verschicken, allerdings wird weder name noch Dateityp mitgeliefert. hier mein Quellcode:


    'Datei senden

    Private Sub btn_Datei_senden_Click(sender As System.Object, e As System.EventArgs) Handles btn_Datei_senden.Click
    filepath2 = txt_Dateipfad.Text

    Dim sendThread As New System.Threading.Thread(AddressOf sendSub)
    sendThread.IsBackground = True
    sendThread.Start()
    End Sub

    Private Sub sendSub()
    Dim cli As New TcpClient
    cli.Connect(IP_txt.Text, 1300)
    Try
    Dim nstm As Stream = cli.GetStream()
    Dim fstm As Stream = New FileStream(filepath2, FileMode.Open, FileAccess.Read)

    Dim buffer(1024 - 1) As Byte
    Do While True
    Dim bytesRead As Integer = fstm.Read(buffer, 0, buffer.Length)
    If bytesRead = 0 Then Exit Do
    nstm.Write(buffer, 0, bytesRead)
    nstm.Flush()
    Loop

    cli.Close()
    nstm.Close()
    fstm.Close()
    MsgBox("Die Datein wurde erfolgreich gesendet.", MsgBoxStyle.Exclamation, "Gesendet")
    Invoke(New nan(AddressOf closeAll), New Object() {})

    Catch ex As Exception
    MsgBox("Ein Übertragungsfehler ist aufgetreten:" & vbCr & ex.ToString, MsgBoxStyle.Critical, "Error")
    End Try
    End Sub

    'Datei senden


    'Datei empfangen Anfang Code
    filePath = My.Computer.FileSystem.SpecialDirectories.Desktop & "\ChatDownload" 'Verzeichnis (Desktop) und Dateiname mit Endung

    Dim ListenThread As System.Threading.Thread = New System.Threading.Thread(AddressOf ListenSub)
    ListenThread.IsBackground = True
    ListenThread.Start()

    End Sub


    Private Sub ListenSub()
    Dim server As New TcpListener(IPAddress.Any, 1300)
    server.Start()
    Try
    While True
    Dim c As TcpClient = server.AcceptTcpClient
    Dim s As NetworkStream = c.GetStream

    FileOpen(1, filePath, OpenMode.Binary)
    Dim buffer(1024 - 1) As Byte
    Do While True
    Dim bytesRead As Integer = s.Read(buffer, 0, buffer.Length)
    If bytesRead = 0 Then Exit Do
    FilePut(1, buffer)
    Loop
    FileClose(1)

    s.Close()
    c.Close()
    End While
    Catch ex As Exception
    MsgBox("Ein Übertragungsfehler ist aufgetreten.):" & vbCr & ex.ToString, MsgBoxStyle.Critical, "Error")
    End Try
    End Sub
    'Datei empfangen Code ende

    *Topic verschoben*

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    Josheyyy schrieb:

    allerdings wird weder name noch Dateityp mitgeliefert.
    Das ist nicht weiter verwunderlich.
    Schliesslich überträgst du diese Informationen auch nicht.

    Am besten schaust du dir mal ein Protokoll an, das für Dateiübertragung gedacht ist (z.B. SFTP) und bildest es nach.
    Oder du verwendest gleich FTP.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „petaod“ ()