Moin,
ich programmiere gerade etwas ähnliches wie das hier [Beta] SimpleFileShare (WebServer)
Nun habe ich aber ein strukturelles Problem wie ich das FileSharing bewerkstelligen soll.
Speziell sollen natürlich mehrere Zugriffe möglich sein. Also dachte ich ich muss aufjedenfall mit Threads arbeiten, aber wie berwerkstellige ich dies am besten?
Ich habe einen BackgroundWorker in dem auf eine eingehende Verbindung gewartet wird und dann den Stream ausließt.
Hiernach wird dann der Header und die Datei in den Stream geschrieben.
Was passiert aber nun wenn innerhalb diesen Vorgangs ein weitere eingehende Verbindung eingeht? Wie soll ich das Codetechnisch Managen?
Irgendwie muss ich ja nachdem eine Verbindung eingegangen ist einen neuen Client erstellen wo auch wieder auf eine Verbindung gewartet wird. Wüsste nur nicht wie ich das machen sollte.
ich programmiere gerade etwas ähnliches wie das hier [Beta] SimpleFileShare (WebServer)
Nun habe ich aber ein strukturelles Problem wie ich das FileSharing bewerkstelligen soll.
Speziell sollen natürlich mehrere Zugriffe möglich sein. Also dachte ich ich muss aufjedenfall mit Threads arbeiten, aber wie berwerkstellige ich dies am besten?
Ich habe einen BackgroundWorker in dem auf eine eingehende Verbindung gewartet wird und dann den Stream ausließt.
Hiernach wird dann der Header und die Datei in den Stream geschrieben.
Was passiert aber nun wenn innerhalb diesen Vorgangs ein weitere eingehende Verbindung eingeht? Wie soll ich das Codetechnisch Managen?
VB.NET-Quellcode
- Private Sub bg_DoWork(ByVal sender As Object, ByVal e As DoWorkEventArgs) Handles bg.DoWork
- client = server.AcceptTcpClient() ' auf eingehende Verbindung warten
- stream = client.GetStream()
- sr = New StreamReader(stream)
- While True
- If bg.CancellationPending Then Exit While
- Dim text As String = sr.ReadLine()
- If Not text = Nothing AndAlso text.Substring(0, 3) = "GET" Then
- Dim Id As String = text.Substring(5, text.Length - 14)
- th = New Threading.Thread(AddressOf SendFile)
- th.Start(Id)
- End If
- End While
- sr.Close()
- End Sub
Irgendwie muss ich ja nachdem eine Verbindung eingegangen ist einen neuen Client erstellen wo auch wieder auf eine Verbindung gewartet wird. Wüsste nur nicht wie ich das machen sollte.