TCP/IP Kommunikations Problem

  • VB.NET

Es gibt 19 Antworten in diesem Thema. Der letzte Beitrag () ist von Gutserino.

    TCP/IP Kommunikations Problem

    Hallo,

    Ich versuche derzeit ein Programm zu erstellen das aus einem Server und Client besteht.
    Wenn ich zb über den Client den Befehl "ListDrives" and den Server schicke dann soll er dort ein Befehl ausführen und mir das Resultat im Client anzeigen,
    jedoch krieg ich das ganze nur Angezeigt wenn ich das in Form einer Msgbox mache, hab den TCP/IP Code von nem Tutorial genommen und angepasst aber so ganz blick ich dort nich ganz durch.
    Wäre echt korrekt wenn mir da wer helfen kann.

    Hier sind beide Codes:

    Server:

    VB.NET-Quellcode

    1. Imports System
    2. Imports System.IO
    3. Imports System.Net
    4. Imports System.Net.Sockets
    5. Public Class RMserver
    6. Dim stream As NetworkStream
    7. Dim streamw As StreamWriter
    8. Dim streamr As StreamReader
    9. Dim server As TcpListener
    10. Dim client As New TcpClient
    11. Dim ipendpoint As IPEndPoint = New IPEndPoint(IPAddress.Any, 8000)
    12. Dim t As New Threading.Thread(AddressOf Main)
    13. Sub Send(ByVal stext As String)
    14. streamw.WriteLine(stext)
    15. streamw.Flush()
    16. End Sub
    17. Sub Main()
    18. Try
    19. server = New TcpListener(ipendpoint)
    20. server.Start()
    21. client = server.AcceptTcpClient
    22. stream = client.GetStream
    23. streamr = New StreamReader(stream)
    24. streamw = New StreamWriter(stream)
    25. While True
    26. Select Case streamr.ReadLine
    27. 'Command execution
    28. Case "ListDrives"
    29. 'Execute ListDrives
    30. GetDrives()
    31. End Select
    32. End While
    33. Catch ex As Exception
    34. MessageBox.Show(ex.ToString)
    35. End Try
    36. End Sub
    37. Private Sub RMserver_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    38. Try
    39. t.Start()
    40. Catch ex As Exception
    41. client.Close()
    42. streamr.Close()
    43. streamw.Close()
    44. stream.Close()
    45. MessageBox.Show(ex.ToString)
    46. End Try
    47. End Sub
    48. Public Sub GetDrives()
    49. Try
    50. Dim output As String
    51. Dim drives As String() = System.IO.Directory.GetLogicalDrives()
    52. For Each drive In drives
    53. output = drive
    54. Send(output)
    55. Next
    56. Catch ex As Exception
    57. MessageBox.Show(ex.ToString)
    58. End Try
    59. End Sub
    60. End Class


    Client:

    VB.NET-Quellcode

    1. Imports System
    2. Imports System.IO
    3. Imports System.Net
    4. Imports System.Net.Sockets
    5. Public Class RHclient
    6. Dim stream As NetworkStream
    7. Dim streamw As StreamWriter
    8. Dim streamr As StreamReader
    9. Dim client As New TcpClient
    10. Dim t As New Threading.Thread(AddressOf Listen)
    11. Public Const WM_NCLBUTTONDOWN As Integer = &HA1
    12. Public Const HTCAPTION As Integer = &H2
    13. <Runtime.InteropServices.DllImport("User32.dll")> _
    14. Public Shared Function ReleaseCapture() As Boolean
    15. End Function
    16. <Runtime.InteropServices.DllImport("User32.dll")> _
    17. Public Shared Function SendMessage(ByVal hWnd As IntPtr, ByVal Msg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer
    18. End Function
    19. Sub Listen()
    20. While client.Connected
    21. Dim befehl As String = Receive()
    22. If befehl <> "" Then
    23. 'Recieves command output here
    24. MsgBox(befehl)
    25. End If
    26. End While
    27. End Sub
    28. Sub Send(ByVal stext As String)
    29. streamw.WriteLine(stext)
    30. streamw.Flush()
    31. End Sub
    32. Function Receive() As String
    33. Try
    34. Return streamr.ReadLine
    35. Catch
    36. Return ""
    37. End Try
    38. End Function
    39. Private Sub RHclient_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown
    40. If e.Button = MouseButtons.Left Then
    41. ReleaseCapture()
    42. SendMessage(Handle, WM_NCLBUTTONDOWN, HTCAPTION, 0)
    43. End If
    44. End Sub
    45. Private Sub MinimizeButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MinimizeButton.Click
    46. Me.WindowState = FormWindowState.Minimized
    47. End Sub
    48. Private Sub CloseButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CloseButton.Click
    49. Me.Close()
    50. End Sub
    51. Private Sub RHclient_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    52. DisconnectButton.Enabled = False
    53. ConnectButton.Enabled = True
    54. End Sub
    55. Private Sub ConnectButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ConnectButton.Click
    56. Try
    57. If IPTextBox.Text = Nothing Then
    58. DisconnectButton.Enabled = False
    59. StatusListBox.Items.Add("Please enter IP Adress!...")
    60. Else
    61. If PortTextBox.Text = Nothing Then
    62. DisconnectButton.Enabled = False
    63. StatusListBox.Items.Add("Please enter Port!...")
    64. Else
    65. StatusListBox.Items.Add("Trying to connect to " + IPTextBox.Text + ":" + PortTextBox.Text + "...")
    66. client.Connect(IPTextBox.Text, PortTextBox.Text)
    67. If client.Connected Then
    68. 'Connecting to Server
    69. stream = client.GetStream
    70. streamw = New StreamWriter(stream)
    71. streamr = New StreamReader(stream)
    72. t.Start()
    73. StatusListBox.Items.Add("Connected to " + IPTextBox.Text + ":" + PortTextBox.Text + "...")
    74. ConnectButton.Enabled = False
    75. DisconnectButton.Enabled = True
    76. Else
    77. StatusListBox.Items.Add("Cant connect to " + IPTextBox.Text + ":" + PortTextBox.Text + "...")
    78. ConnectButton.Enabled = True
    79. DisconnectButton.Enabled = False
    80. End If
    81. End If
    82. End If
    83. Me.StatusListBox.SelectedIndex = Me.StatusListBox.SelectedIndex + 1
    84. Catch ex As Exception
    85. StatusListBox.Items.Add("Cant connect to " + IPTextBox.Text + ":" + PortTextBox.Text + "...")
    86. ConnectButton.Enabled = True
    87. DisconnectButton.Enabled = False
    88. End Try
    89. End Sub
    90. Private Sub DisconnectButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DisconnectButton.Click
    91. Try
    92. If client.Connected Then
    93. 'Disconnecting from Server
    94. StatusListBox.Items.Add("Disconnecting from " + IPTextBox.Text + ":" + PortTextBox.Text + "...")
    95. client.Close()
    96. stream.Close()
    97. streamw.Close()
    98. streamr.Close()
    99. ConnectButton.Enabled = True
    100. DisconnectButton.Enabled = False
    101. End If
    102. Me.StatusListBox.SelectedIndex = Me.StatusListBox.SelectedIndex + 1
    103. Catch ex As Exception
    104. StatusListBox.Items.Add("Currently no Connection to a Network...")
    105. End Try
    106. End Sub
    107. Private Sub FileExplorerButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FileExplorerButton.Click
    108. FileExplorer.Show()
    109. End Sub
    110. End Class

    VB.NET-Quellcode

    1. Imports System
    2. Imports System.IO
    3. Imports System.Net
    4. Public Class FileExplorer
    5. Private Sub ListDrivesButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListDrivesButton.Click
    6. Try
    7. RHclient.Send("ListDrives")
    8. Catch ex As Exception
    9. MessageBox.Show(ex.ToString)
    10. End Try
    11. End Sub
    12. End Class
    Willkommen im Forum.
    Was meinst Du mit

    Gutserino schrieb:

    jedoch krieg ich das ganze nur Angezeigt wenn ich das in Form einer Msgbox mache
    Klingt für mich wie: Du bekommst das Ergebnis "schriftlich". Wenn dem so ist: Was willst Du sonst? Wenn dem nicht so ist: Was meinst Du dann?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Die Funktion dort soll mir die Laufwerke/Festplatten auslesen.
    Und ich hab zb 3 aktiv und bekomme dann als antwort 3x eine Msgbox mit der Antwort "C:","D:","E" das ganze würde ich aber gerne zb in einer Listbox aufgelistet haben anstatt in mehreren Msgboxen.
    Dann schreib das doch in den Code. Allerdings hast Du dabei 2 Probleme.
    1. Du weißt nicht, wann die Server-Funktion fertig ist, also wieviele Laufwerke gelistet werden. Daher musst Du nach jedem Receive Deine ListBox aktualisieren.
    2. Der Receive-Code ist innerhalb einer eigenen Klasse und auch noch nebenläufig. Daher musst Du mit EventRaising dem Form mitteilen, dass neue Infos kommen und per Invoke das Form zur Änderung seiner ListBox "animieren". Kommst Du mit diesen Infos weiter?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Hab nochmal etwas simplives zsm gebastelt um das ganze zu testen, ich kann jetzt so wie ich es wollte ein Command schicken zum Server der mir dann im Rückzug etwas schickt wie zb die Liste der Laufwerke
    und das ganze in eine Listbox..nur das Problem ist immernoch das ich zb 3 Laufwerke hab und ich dreimal den Button drücken muss um alle Aufgelistet zu haben.
    Hast du da vllt ein Codeschnipsel der das löst ?

    Hiernochmal die Codes

    Server:

    VB.NET-Quellcode

    1. Imports System
    2. Imports System.IO
    3. Imports System.Net
    4. Imports System.Net.Sockets
    5. Public Class Form1
    6. Dim stream As NetworkStream
    7. Dim streamw As StreamWriter
    8. Dim streamr As StreamReader
    9. Dim Server As TcpListener
    10. Dim client As New TcpClient
    11. Dim ipendpoint As IPEndPoint = New IPEndPoint(IPAddress.Any, 8000)
    12. Dim mainthread As Threading.Thread
    13. Public Sub GetDrives()
    14. Try
    15. Dim output As String
    16. Dim drives As String() = System.IO.Directory.GetLogicalDrives()
    17. For Each drive In drives
    18. output = drive
    19. streamw.WriteLine(output)
    20. streamw.Flush()
    21. Next
    22. Catch ex As Exception
    23. MessageBox.Show(ex.ToString)
    24. End Try
    25. End Sub
    26. Sub mainserver()
    27. Try
    28. Server = New TcpListener(ipendpoint)
    29. Server.Start()
    30. client = Server.AcceptTcpClient
    31. stream = client.GetStream
    32. streamr = New StreamReader(stream)
    33. streamw = New StreamWriter(stream) ' Müsste eigentlich alles Klar sein.
    34. While True
    35. Select Case streamr.ReadLine
    36. Case "login"
    37. streamw.WriteLine("Fertig eingeloggt")
    38. streamw.Flush()
    39. Case "listdrives" ' ......
    40. GetDrives()
    41. Case "logoff" '........
    42. End Select
    43. End While
    44. Catch
    45. ' Hier wieder eine Fehler behandlung und ein neuen Versuch den Server zu starten...
    46. End Try
    47. End Sub
    48. Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
    49. Server.Stop()
    50. Try
    51. mainthread.Abort()
    52. Catch
    53. End Try
    54. End Sub
    55. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    56. mainthread = New Threading.Thread(AddressOf mainserver)
    57. mainthread.Start()
    58. End Sub
    59. End Class
    60. ]


    Client:

    VB.NET-Quellcode

    1. Imports System
    2. Imports System.IO
    3. Imports System.Net
    4. Imports System.Net.Sockets
    5. Public Class Form1
    6. Dim Client As New TcpClient 'Client
    7. Dim stream As NetworkStream
    8. Dim streamw As StreamWriter 'Zum senden
    9. Dim streamr As StreamReader 'Zum empfangen
    10. Sub Connect_to_Server(ByVal ip As String, ByVal port As Integer)
    11. Client.Connect(IP, Port) 'Client verbindet sich mit IP: 192.168.111.17 und Port 4000
    12. If Client.Connected Then
    13. Deklare_Streams() ' Sub Deklare_Streams()
    14. MsgBox("Verbunden")
    15. Else
    16. MsgBox("Verbidnung konnte nicht mit " & IP & " aufgebaut werden!")
    17. End If
    18. End Sub
    19. Sub Deklare_Streams()
    20. stream = Client.GetStream ' Stream wird auf Client verwiesen
    21. streamw = New StreamWriter(stream) ' Stream zum Senden wird deklariert
    22. streamr = New StreamReader(stream) ' Stream zum Empfangen wird deklariert
    23. End Sub
    24. Sub client_send(ByVal text As String) ' Sub zum senden der Daten 'text'
    25. streamw.WriteLine(text)
    26. streamw.Flush() ' Achtung! Flush darf nie vergessen werden, da sonst die Daten nicht gesendet werden.
    27. End Sub
    28. Function client_recieve() As String ' Sub zum empfangen der Daten.
    29. client_recieve = streamr.ReadLine
    30. End Function
    31. Private Sub ConnectButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ConnectButton.Click
    32. Try
    33. Connect_to_Server("127.0.0.1", 8000)
    34. Catch ex As Exception
    35. MessageBox.Show(ex.ToString)
    36. End Try
    37. End Sub
    38. Private Sub LoginButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LoginButton.Click
    39. Try
    40. client_send("login")
    41. RichTextBox1.Text = client_recieve()
    42. Catch ex As Exception
    43. MessageBox.Show(ex.ToString)
    44. End Try
    45. End Sub
    46. Private Sub ListDrivesButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListDrivesButton.Click
    47. Try
    48. client_send("listdrives")
    49. ListBox1.Items.Add(client_recieve)
    50. Catch ex As Exception
    51. MessageBox.Show(ex.ToString)
    52. End Try
    53. End Sub
    54. End Class

    Schicke einfach nicht alle Laufwerke einzeln durch, sondern als ein String, dessen Bestandteile durch ein Trennzeichen separiert werden. Also z.B.

    VB.NET-Quellcode

    1. Public Sub GetDrives()
    2. Try
    3. Dim FinalString = String.Join(Environment.NewLine, System.IO.Directory.GetLogicalDrives())
    4. streamw.WriteLine(FinalString)
    5. streamw.Flush()
    6. Catch ex As Exception
    7. MessageBox.Show(ex.ToString)
    8. End Try
    9. End Sub

    Und im Client wieder auseinanderklamüsern:

    VB.NET-Quellcode

    1. Dim DriveLetters = streamr.ReadLine.Split({Environment.NewLine}, StringSplitOptions.None)
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Ich versteh die Frage nicht. Mein Gedankengang ist folgender: Derzeit schiebst Du jeden Laufwerksbuchstaben einzeln in den Kommunikationsstream. Also:
    1. C:\
    2. D:\
    3. E:\
    Und das führt dazu, dass Du bei jedem ReadLine nur einen Laufwerksbuchstaben herbekommst. Daher hab ich das jetzt so gemacht, dass alle Buchstaben gleichzeitig geschickt werden. Die sind dann durch ein Sonderzeichen getrennt. Also: Alle Buchstaben gelistet, aber nur ein String. Und daher nur ein ReadLine nötig, um alle zu erhalten. Du musst den String zwar splitten, aber das ist ja kein Problem, oder? Um das umzusetzen, nimm den Codeblock#1 aus Post#7 her und verwende ihn statt P#6, Server, Zeile#15-#27. Und Mein CB#2 kommt in den Clientcode Z#32.

    btw: es heißt receive, nicht recieve
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    @Gutserino Deine Posts wären besser lesbar, wenn Du Deine langen Code-Abschnitte in einen packst.

    Leichter lesbar => bessere Hilfe
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Uuf ich blicks net, bin ziehmlich neu mit dem ganzen Kram.
    Aber wie ich das ganze am Ende in den Client einbinde is mir net schlüssig ?!

    So klappts definitiv nicht
    Spoiler anzeigen
    Function client_recieve() As String
    Dim DriveLetters = streamr.ReadLine.Split({Environment.NewLine}, StringSplitOptions.None)
    client_recieve = DriveLetters.ToString
    End Function
    Ok, hm. Was steht denn dann bei DriveLetters drin? Setz mal n Haltepunkt bei client_recieve = DriveLetters.ToString und warte, bis der Compiler dann stoppt ...
    Ehm. Moment. DriveLetters ist ein StringArray. Das kannst Du nicht sinnvoll mit ToString in einen String umwandeln. Dann lass das Splitten und schreib nur:

    VB.NET-Quellcode

    1. Private Function client_recieve() As String
    2. Return streamr.ReadLine
    3. End Function

    Dann kommt ein String mit Zeilenumbrüchen raus. So wie es vom Server in den Strem reingeschrieben wurde.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Ok. Ergibt Sinn. Environment.NewLine und ReadLine eben. Hm. Dann nehmen wir eben ein anderes Trennzeichen.

    VB.NET-Quellcode

    1. Dim FinalString = String.Join("|"c, System.IO.Directory.GetLogicalDrives())

    In Receive erhältst Du dann wohl über ReadLine "C:\|D:\|E:\" Die musst Du dann eben splitten, sobald Du irgendwo im Code die Funktion client_recieve aufrufst.

    VB.NET-Quellcode

    1. ListBox1.AddRange(client_recieve.Split("|"c))
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Und natürlich hörts nicht auf mit den Problemen, warum auch.
    Jetzt ist es so das er das ganze manchmal anzeigt und manchmal wiederum einfach das Programm sich aufhängt.....

    Ich hab in meinem Client derzeit einen Button der das momentan ausgewählt Laufwerk an den Server schickt zum Testen,
    als antwort lass ich mir vom Server eine Msgbox anzeigen mit dem was der Client geschickt hat und angezeigt wird dann zb "D:".
    Das ganze speichere ich dann in die Variable currentdrive.

    Mit
    dem nächsten Button gibt er mir eine Liste wieder der Ordner in dem
    jeweiligen Laufwerk, hab ich mir anzeigen lassen per Msgbox und das
    funktioniert auch normalerweise.

    Aber irgendwie hängts manchmal das er den currentdrive manchmal wohl nicht richtig übergibt und der Client sich aufhängt.

    Was ebenfalls absolut 0 Sinn ergibt das ich 3 mal den Button klicken muss damit er das überhaupt schickt und mir die antwort gibt, wtf ?!

    Hier die jeweiligen Codes
    Server:
    Die Funktion zum wiedergeben der Ordner
    Spoiler anzeigen
    Public Sub GetFolders()
    Try
    Dim FinalString = String.Join("|"c, System.IO.Directory.GetDirectories(currentdrive))
    streamw.WriteLine(FinalString.ToString)
    streamw.Flush()
    'MsgBox(FinalString.ToString)
    Catch ex As Exception
    MessageBox.Show(ex.ToString)
    End Try
    End Sub


    Der Servercheck für die Commands
    Spoiler anzeigen
    Try
    Server = New TcpListener(ipendpoint)
    Server.Start()
    client = Server.AcceptTcpClient
    stream = client.GetStream
    streamr = New StreamReader(stream)
    streamw = New StreamWriter(stream) ' Müsste eigentlich alles Klar sein.
    While True
    Select Case streamr.ReadLine
    Case "login"
    streamw.WriteLine("Fertig eingeloggt")
    streamw.Flush()
    Case "listdrives" ' ......
    GetDrives()
    Case "listfolders"
    GetFolders()
    Case Else
    If streamr.ReadLine.Contains("currentdrive") Then
    Dim input As String = client_recieve().Replace("currentdrive|", "").Replace("\", "")
    currentdrive = ""
    currentdrive = input
    MsgBox(input)
    End If
    If streamr.ReadLine.Contains("currentfolder") Then
    Dim input As String = client_recieve.Replace("currentfolder|", "")
    currentfolder = ""
    currentfolder = input
    'GetSubFolders()
    End If
    End Select
    End While
    Catch
    ' Hier wieder eine Fehler behandlung und ein neuen Versuch den Server zu starten...
    End Try


    Vllt wer ne Idee worans hängt.Ich dreh hier noch durch....

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Gutserino“ ()

    @Gutserino wenn Du jetzt noch den Code im Spoiler als Code formatierst, kann man ihn auch als solchen lesen. ;)
    Spoiler anzeigen

    VB.NET-Quellcode

    1. ' Mein Code
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ich hab die Basis von einem TCP Chat benutzt und das ganze umgeändert, damit funktioniert die Übertragung 1a.
    Beim Server wo die Nachrichten eingehen vom Client hab ich dann einfach eine Schleife eingebaut die nach gewissen Codes darin sucht und wen etwas bestimmtes gefunden wurde dann wird die jeweilige Funktion ausgeführt und zurück zum Client geschickt und verarbeitet.

    So kann ich über Netzwerk jetzt zb einen Datei Explorer benutzen, funktioniert wunderbar.
    Jetzt muss ich nur noch ne vernünftige Methode finden Dateien zu versenden, dachte da erst an simples FTP aber das ganze funktioniert überhaupt nicht.Strings upload in ne ne Text Datei auf den FTP funktioniert wunderbar, aber Datei irgendwie nich.

    Hier von
    Multiserver (TCP)


    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Gutserino“ ()