vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Mails senden, abrufen und decodieren - ganz easy ;-)  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Nochmal zur Dateiübertragung per TCP/IP 
Autor: Tomarr
Datum: 01.02.06 14:39

Ich habe mal ein paar Beispiele aus dem Forum ausprobiert, und dachte auch ich hätte es verstanden, aber dem scheint nicht so, denn es funktioniert einfach nicht.

Und zwar bin ich an folgender Stelle. Der Client wählt sich beim Server ein, und der Server soll seine Daten aus einem bestimmten Verzeichnis zum Client schicken.

Dies ist der Clientcode:
        client = New TcpClient
        'verbinden mit server (localhost kann mit einer gültigen ip ersetzt 
        ' werden
        client.Connect(SetIPAdress, setPort)
 
        'networkstream binden
        Stream = client.GetStream()
 
        StartGetData()
        Dim inDateien As Integer = 0
 
        Writer = New BinaryWriter(Stream)
        Reader = New BinaryReader(Stream)
 
        Writer.Write(SendFiles)
 
        ' Anzahl Dateien die auf dem Server liegen
        Dim counterIn As Integer = Reader.ReadInt32()
 
        status.Text = "Online"
        Anzeigen.AnzeigePanel("Empfange Daten", counterIn)
        Do
            Try
                ' Dateiname
                fnIn = Reader.ReadString()
                ' Wenn Dateiname = All Send dann übertragung beendet
                If fnIn = AllSend Then
                    StartGetData = True
                    Exit Do
                End If
                iIn = Reader.ReadInt32()
                bIn = Reader.ReadBytes(iIn)
                fsIn = New FileStream(setSafePath & fnIn, FileMode.Create, _
                  FileAccess.Write, FileShare.None)
                fsIn.Write(bIn, 0, iIn)
                fsIn.Close()
                inDateien += 1
                Anzeigen.UpdateAnzeigepanel(inDateien)
                StartGetData = False
            Catch ex As Exception
                MsgBox(ex.ToString)
            End Try
        Loop While (client.Connected)
Dies ist der Servercode:
            Listener = New TcpListener(Net.IPAddress.Any, setPort)
            Listener.Start()
            Anzeigen.AddToLog("Test")
            While True
                status.Text = "Offline (Warte auf Anruf)"
 
                Connection = Listener.AcceptSocket()
                SocketStream = New NetworkStream(Connection)
 
                Writer = New BinaryWriter(SocketStream)
                Reader = New BinaryReader(SocketStream)
 
                status.Text = "Online"
                Writer.Write(ConnectOK)
                            Case SendFiles
                                ' Alle Dateien aus Transfer senden
                                Dim di As New DirectoryInfo(setTransPath)
                                Dim fi As FileInfo() = di.GetFiles
                                Dim fiTemp As FileInfo
                                Dim fsOut As New FileStream(setTransPath, _
                                  FileMode.Open, FileAccess.Read, _
                                  FileShare.None)
                                Dim bOut() As Byte
                                Dim counterOut As _
                                  System.Collections.ObjectModel.ReadOnlyCollec_
                                  tion(Of String)
 
                                lblStatus.Text = "Sende Daten"
                                counterOut = My.Computer.FileSystem.GetFiles( _
                                  setTransPath)
                                'Anzahl Dateien die auf dem Server liegen
                                Writer.Write(counterOut.Count)
 
                                Anzeigen.AnzeigePanel("Sende Daten", _
                                  counterOut.Count)
                                For Each fiTemp In fi
                                    If Connection.Connected = True Then
                                        ReDim bOut(fiTemp.Length)
                                        ' Dateiname
                                        Writer.Write(fiTemp.Name)
                                        Writer.Write(fiTemp.Length)
                                        fsOut.Read(bOut, 0, fiTemp.Length)
                                    Else
                                        Exit For
                                    End If
                                Next
                                Writer.Write(AllSend)
Nun ist schon an der Stelle wo der Dateiname übermittelt wird der Fehler. Und zwar wird immer gemelded das nachdem Stream keine weitere Übertragung mehr möglich ist.

Vielleicht kann mir doch noch mal einer an diesem, zugegeben etwas unübersichtlichem Beispiel, zeigen wie es richtig geht. Es ist halt etwas unübersichtlich geworden weil ich schon mehrere Möglichkeiten ausprobiert habe.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Nochmal zur Dateiübertragung per TCP/IP1.048Tomarr01.02.06 14:39
Anderer Code selbes Ergebnis792Tomarr03.02.06 03:56

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel