Hallo VB-Paradise Community,
eine Aufgabe bringt micht nach mehreren Tagen an den Rand des Wahnsinns und der Verzweifelung. (War schon mehrfach geneigt meine Kiste aus dem Fenster zu schmeißen)
Und zwar geht es um eine simple Aufgabe nähmlich es gibt einen Server wo am ende die Dateien die von den Clienten geschickt werden drauf landen. Das hab ich auch geschafft und geht alles Wunderbar. Aber eine Sache geht nicht oder ich finde nicht heraus wie es geht nähmlich das Herunterladen von dem Server auf dem Clienten. Es ist UNBEDINGT wichtig das bei beiden Aufgaben NUR der Server den Port freischalten muss und der Client nicht.
Ich habe mich an Code auch schon aus diesem Forum bedient.
Server:
Client:
Wie bekomme ich nun den Clienten dazu die Dateien vom Server wieder herunterzuladen ohne das der Client Server Spielen muss und eine Portweiterleitung im Client notwendig wird.
Bitte Bitte nur Sinnvolle Antworten und Nein ich habe die Suchfunktion nicht benutzt da mein lieber Computer bzw. mein lieber Firefox meint sich sonst aufzuhängen
Beispiele sind bei mir sehr Willkommen. Vielen Dank im vorraus.
Gruß Joel
eine Aufgabe bringt micht nach mehreren Tagen an den Rand des Wahnsinns und der Verzweifelung. (War schon mehrfach geneigt meine Kiste aus dem Fenster zu schmeißen)
Und zwar geht es um eine simple Aufgabe nähmlich es gibt einen Server wo am ende die Dateien die von den Clienten geschickt werden drauf landen. Das hab ich auch geschafft und geht alles Wunderbar. Aber eine Sache geht nicht oder ich finde nicht heraus wie es geht nähmlich das Herunterladen von dem Server auf dem Clienten. Es ist UNBEDINGT wichtig das bei beiden Aufgaben NUR der Server den Port freischalten muss und der Client nicht.
Ich habe mich an Code auch schon aus diesem Forum bedient.
Server:
VB.NET-Quellcode
- Imports System.IO
- Imports System.Net
- Imports System.Net.Sockets
- Imports System.Threading
- Module Module1
- Private Port As Integer = 65534
- Dim server As TcpListener
- Dim client As TcpClient
- Dim ipendpoint As IPEndPoint
- Dim list As New List(Of userlist)
- Dim t_empfaenger As Thread
- Private Structure userlist
- Dim stream_w As StreamWriter
- Dim stream_r As StreamReader
- Dim filename As String
- End Structure
- Sub Main()
- Console.Title = "File Send Server"
- ipendpoint = New System.Net.IPEndPoint(System.Net.IPAddress.Any, Port)
- server = New TcpListener(ipendpoint)
- server.Start()
- Console.WriteLine("Server is online on " + ipendpoint.ToString)
- While True
- client = server.AcceptTcpClient
- If client.Connected = True Then
- Dim c As New userlist
- c.stream_w = New StreamWriter(client.GetStream)
- c.stream_r = New StreamReader(client.GetStream)
- list.Add(c)
- Console.WriteLine("Client has connected")
- t_empfaenger = New Thread(AddressOf empfaenger)
- t_empfaenger.Start(c)
- End If
- End While
- End Sub
- Private Sub empfaenger(ByVal con As userlist)
- While True
- Try
- Dim post As String = con.stream_r.ReadLine
- If InStr(post, "client.info.") <> 0 Then
- post = Mid(post, 13)
- Dim info() As String = Split(post, ";")
- con.filename = info(0)
- Console.WriteLine("File Info:")
- Console.WriteLine(" Name: " + con.filename)
- Console.WriteLine(" Groesse: " + info(1) + "B")
- Console.WriteLine(" Type: " + info(2))
- End If
- If InStr(post, "client.file.") <> 0 Then
- post = Mid(post, 13)
- Console.WriteLine("Erhalte Byts")
- Dim buffer() As Byte = Convert.FromBase64String(post)
- File.WriteAllBytes(My.Application.Info.DirectoryPath + "\" + con.filename, buffer)
- Console.WriteLine("Sende Fertig")
- End If
- Catch ex As Exception : End Try
- End While
- End Sub
- End Module
Client:
VB.NET-Quellcode
- Imports System.IO
- Imports System.Net
- Imports System.Net.Sockets
- Public Class Form1
- Dim client As TcpClient
- Dim stream_w As StreamWriter
- Dim stream_r As StreamReader
- Private Delegate Sub dAddText(ByVal text As String)
- Private Sub AddText(ByVal text As String)
- Me.Invoke(New dAddText(AddressOf ListBox1_additem), text)
- End Sub
- Private Sub ListBox1_additem(ByVal text As String)
- ListBox1.Items.Add(text)
- End Sub
- Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click, TextBox1.Click
- If OpenFileDialog1.ShowDialog(Me) = Windows.Forms.DialogResult.OK Then
- TextBox1.Text = OpenFileDialog1.FileName
- End If
- End Sub
- Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
- If File.Exists(TextBox1.Text) = True Then
- Dim finfo As New FileInfo(TextBox1.Text)
- Label3.Text = "Name: " + finfo.Name
- Label4.Text = "Größe: " + finfo.Length.ToString + " B"
- Label5.Text = "Type: " + finfo.Extension
- End If
- Try
- If File.Exists(TextBox1.Text) = True And client.Connected = True Then
- Button3.Enabled = True
- End If
- Catch ex As Exception
- End Try
- End Sub
- Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
- client = New TcpClient
- TextBox2.Enabled = False
- TextBox3.Enabled = False
- TextBox2.Enabled = False
- Try
- client.Connect(TextBox2.Text, CInt(TextBox3.Text))
- Catch ex As Exception
- ListBox1.Items.Add("Fehler beim verbinden")
- TextBox2.Enabled = True
- TextBox3.Enabled = True
- TextBox2.Enabled = True
- Exit Sub
- End Try
- If client.Connected = True Then
- ListBox1.Items.Add("Verbindung hergestält")
- stream_w = New StreamWriter(client.GetStream)
- stream_r = New StreamReader(client.GetStream)
- If File.Exists(TextBox1.Text) = True Then
- Button3.Enabled = True
- End If
- Else
- TextBox2.Enabled = True
- TextBox3.Enabled = True
- TextBox2.Enabled = True
- ListBox1.Items.Add("Fehler beim verbinden")
- End If
- End Sub
- Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
- If File.Exists(TextBox1.Text) = True And client.Connected = True Then
- Button1.Enabled = False
- Button3.Enabled = False
- ListBox1.Items.Add("Sende Fileinfos")
- Dim finfo As New FileInfo(TextBox1.Text)
- stream_w.WriteLine("client.info." + finfo.Name + ";" + finfo.Length.ToString + ";" + finfo.Extension)
- stream_w.Flush()
- ListBox1.Items.Add("Sende File")
- Dim buffer() As Byte = File.ReadAllBytes(TextBox1.Text)
- stream_w.WriteLine("client.file." + Convert.ToBase64String(buffer))
- stream_w.Flush()
- ListBox1.Items.Add("Sende Fertig")
- Button1.Enabled = True
- Button3.Enabled = True
- End If
- End Sub
- End Class
Wie bekomme ich nun den Clienten dazu die Dateien vom Server wieder herunterzuladen ohne das der Client Server Spielen muss und eine Portweiterleitung im Client notwendig wird.
Bitte Bitte nur Sinnvolle Antworten und Nein ich habe die Suchfunktion nicht benutzt da mein lieber Computer bzw. mein lieber Firefox meint sich sonst aufzuhängen
Beispiele sind bei mir sehr Willkommen. Vielen Dank im vorraus.
Gruß Joel