Hallo Gemeinde,
nach langer Pause durch Krankheit und Stress kann ich endlich wieder an meinem Projekt weiterarbeiten. Nun hänge ich seit einigen Tagen an einem Problem. Ich habe auf Client und Serverseite jeweils eine Klasse geschrieben zum senden und empfangen von dateien... Das funktioniert suuuuuuuuper...LOKAL,.... sind client und server auf zwei pcs und und ich sende dann etwas, is die gesendete datei korrupt und kann nicht geöffnet werden.. ich hab alles mögliche versucht, aber ich komm einfach nicht drauf. ich poste mal die klassen:
Server (empfangen):
Und hier der Client der sendet:
Entweder hab ich einfach ne Blockade und seh die kleinigkeit nicht oder es ist wirklich was größeres schief gelaufen
lg Litti
nach langer Pause durch Krankheit und Stress kann ich endlich wieder an meinem Projekt weiterarbeiten. Nun hänge ich seit einigen Tagen an einem Problem. Ich habe auf Client und Serverseite jeweils eine Klasse geschrieben zum senden und empfangen von dateien... Das funktioniert suuuuuuuuper...LOKAL,.... sind client und server auf zwei pcs und und ich sende dann etwas, is die gesendete datei korrupt und kann nicht geöffnet werden.. ich hab alles mögliche versucht, aber ich komm einfach nicht drauf. ich poste mal die klassen:
Server (empfangen):
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
Und hier der Client der sendet:
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("192.168.2.118", 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
Entweder hab ich einfach ne Blockade und seh die kleinigkeit nicht oder es ist wirklich was größeres schief gelaufen
lg Litti