Hallo VBler,
ich habe ich TCP client server projekt und eine dateiübertragung die eigentlich super funktioniert! Wenn ich allerdings den client von einem anderen PC im netzwerk starte und mich mit dem Server verbinde, dann überträgt er die Daten nur Fehlerhaft..Also bei nem Bild fehlt z.B. etwas oder .exe sind korrupt...
wird irgendwo ein byte zuviel oder zu wenig gesendet? hier mal mein code:
Server und empfangen der Datei
Client und senden der Datei:
Ich glaube ich überseh es einfach nur, aber deswegen frage ich euch ja
Gruß
Litti
ich habe ich TCP client server projekt und eine dateiübertragung die eigentlich super funktioniert! Wenn ich allerdings den client von einem anderen PC im netzwerk starte und mich mit dem Server verbinde, dann überträgt er die Daten nur Fehlerhaft..Also bei nem Bild fehlt z.B. etwas oder .exe sind korrupt...
wird irgendwo ein byte zuviel oder zu wenig gesendet? hier mal mein code:
Server und empfangen der Datei
Quellcode
- Imports System.IO
- Imports System.Net
- Imports System.Net.Sockets
- Public Class DownloadFile
- Dim GetFile As String
- Public Event TransferBeginn()
- Public Event TransferFertig()
- Public Event TransferFail(ByVal message As String)
- Public Sub Beginn(ByVal Datei As String)
- Me.GetFile = Datei
- Dim t As New Threading.Thread(AddressOf ListenSub)
- t.IsBackground = True
- t.Start()
- End Sub
- Private Sub ListenSub()
- Dim server As New TcpListener(IPAddress.Any, 2121)
- server.Start()
- Dim c As TcpClient = server.AcceptTcpClient
- Try
- If c.Connected Then
- RaiseEvent TransferBeginn()
- Dim s As NetworkStream = c.GetStream
- FileOpen(1, GetFile, 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()
- server.Stop()
- RaiseEvent TransferFertig()
- End If
- Catch ex As Exception
- server.Stop()
- RaiseEvent TransferFail(ex.Message)
- End Try
- End Sub
- End Class
Client und senden der Datei:
Quellcode
- Imports System.IO
- Imports System.Net
- Imports System.Net.Sockets
- Public Class UploadFile
- Dim SendFile As String
- Public Sub Beginn(ByVal Datei As String)
- Me.SendFile = Datei
- Dim sendThread As New System.Threading.Thread(AddressOf SendSub)
- sendThread.IsBackground = True
- sendThread.Start()
- End Sub
- Private Sub SendSub()
- Dim cli As New TcpClient
- Try
- cli.Connect("127.0.0.1", 2121)
- Dim nstm As Stream = cli.GetStream()
- Dim fstm As Stream = New FileStream(SendFile, 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()
- Catch ex As Exception
- End Try
- End Sub
- End Class
Ich glaube ich überseh es einfach nur, aber deswegen frage ich euch ja
Gruß
Litti