TCP Client sendet Befehl an Server - Firefox startet

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Gonethu.

    TCP Client sendet Befehl an Server - Firefox startet

    Hallo zusammen,

    wie ich Gestern auch schon eine Frage hatte, habe ich auch heute wieder ein Problem. (Mein Hirn will das mit dem ganzen TCP nicht verstehen :D )

    Habe es jetzt geschafft auf dem Microsoft beispiel einen Client und Server zu programmieren (eher zu 90% abgeguckt)
    Das heißt das der Client einen Button drückt und eine Nachricht im Consolen Fenster vom Server erscheint (nichts Wildes)

    Aber wie bekomme ich es jetzt hin, das wenn der Client auf einen Button drückt das der Server z.B. den Firefox mit der Seite Youtube startet
    Lokal geht das ganze ja mit dem Befehl:

    Quellcode

    1. Process.Start("firefox.exe", "youtube.de")


    Nur soll der Server das ganze machen, sobald der Client im das sagt (vllt. habe ich das gestern noch nicht ganz verstanden und hab bei Google auch nichts genauers dazu gefunden)

    LG
    Du könntest machen, dass der Client einfach folgenden Befehl sendet:
    start:firefox.exe:youtube.de

    Der Server bekommt diesen Befehl und verwertet ihn, heißt z.b.: (freihand)

    VB.NET-Quellcode

    1. Dim message as string = "start:firefox.exe:youtube.de"
    2. Dim befehl() as string = message.split(":")
    3. ​select case befehl(0)
    4. case "start"
    5. process.start(befehl(1), befehl(2))
    6. end select
    Wär aber sicherheitstechnisch das schlinnste was man machen kann....
    (Bedeutet nicht das dus so nich machen soll, sondern nur das dus nur so machen sollst solang du lernst und die exe auf deinem Rechner bleibt und nie läuft. Außer du testest was und das auch nur wenn du in deinem Heimnetzwerk bist)
    Lg Mokki
    ​Smartnotr - ein intelligentes Notizprogramm
    zum Thread

    Hallo,

    naja Sicherheitstechnisch sollte es für mich kein Problem darstellen, da ich es nur mit meinen Freunden zum testen programmiere und dies auch über eine VPN läuft.

    @xd-franky-5: Wäre es auch rein theoretisch so möglich:

    Client sendet folgendes:

    Quellcode

    1. Dim IPTarget As New System.Net.IPEndPoint(System.Net.IPAddress.Parse("MEINE IP"), 10000)
    2. Dim sender2 As New Socket(AddressFamily.InterNetwork, _
    3. SocketType.Stream, ProtocolType.Tcp)
    4. sender2.Connect(IPTarget)
    5. Dim msg2 As Byte() = _
    6. Encoding.ASCII.GetBytes("<firefox>")
    7. Dim bytesSent As Integer = sender2.Send(msg2)
    8. sender2.Shutdown(SocketShutdown.Both)
    9. sender2.Close()


    Und der Server macht folgendes:

    Quellcode

    1. While True
    2. bytes = New Byte(1024) {}
    3. Dim bytesRec As Integer = handler2.Receive(bytes)
    4. data += Encoding.ASCII.GetString(bytes, 0, bytesRec)
    5. If data.IndexOf("<firefox>") > -1 Then
    6. Exit While
    7. start_firefox()
    8. End If
    9. End While


    Kann auch sein das ich komplett falsch liege, war aber halt eine eigene Überlegung
    Es ist egal.... auf dem Client läuft nen Tcp-Client der sich mit jedem verbindert.... dein Code ist "sicherer" da der Angreifer nicht iwas starten kann (macht aber im Endeffeckt nix aus, weil der Firefox auch Lücken hat). Wenn das Ganze über VPN läuft ist das schonmal besser. Dann müssen aber alle den VPN-Tunnel nutzen und du musst allen die auf die PC deiner Freunde Zugriff haben vertrauen (und das kannst du nicht).

    Lg Mokki
    ​Smartnotr - ein intelligentes Notizprogramm
    zum Thread

    Stimmt, da hast du recht (was weis ich was die sich sonst wo runterladen) :huh:

    Aber solange es ja nur zum testen und üben ist, sollte es für mich kein Problem darstellen.

    Ich werde diesen Post hier mal editieren sobald ich es geschafft habe.

    Vielen Dank nochmal


    EDIT: So schnell kommt man auf die Lösung. Einmal kurz das Gehirn einschalten und dann komm auch was vernünftiges dabei heraus.

    (ich denke mal das ich den Code hier posten kann, falls nicht, lösche ich das direkt wieder)

    Code vom Client:

    Spoiler anzeigen

    Quellcode

    1. ​Private Sub start_firefox()
    2. Dim bytes(1024) As Byte
    3. Dim IPTarget As New System.Net.IPEndPoint(System.Net.IPAddress.Parse("MEINE IP"), 10001)
    4. Dim sender As New Socket(AddressFamily.InterNetwork, _
    5. SocketType.Stream, ProtocolType.Tcp)
    6. sender.Connect(IPTarget)
    7. Label1.Text = ("Socket connected to" + _
    8. sender.RemoteEndPoint.ToString())
    9. Dim msg As Byte() = _
    10. Encoding.ASCII.GetBytes("<firefox>")
    11. Dim bytesSent As Integer = sender.Send(msg)
    12. Dim bytesRec As Integer = sender.Receive(bytes)
    13. Console.WriteLine("Echoed test = {0}", _
    14. Encoding.ASCII.GetString(bytes, 0, bytesRec))
    15. sender.Shutdown(SocketShutdown.Both)
    16. sender.Close()
    17. End Sub


    Und vom Server:
    Spoiler anzeigen

    Quellcode

    1. ​Public Shared Sub Main()
    2. Dim bytes2() As Byte = New [Byte](1024) {}
    3. Dim IPTarget2 As New System.Net.IPEndPoint(System.Net.IPAddress.Parse("MEINE IP"), 10001)
    4. Dim listener2 As New Socket(AddressFamily.InterNetwork, _
    5. SocketType.Stream, ProtocolType.Tcp)
    6. listener2.Bind(IPTarget2)
    7. listener2.Listen(10)
    8. While True
    9. Console.WriteLine("Waiting for a connection...2")
    10. Dim handler2 As Socket = listener2.Accept()
    11. data = Nothing
    12. While True
    13. bytes2 = New Byte(1024) {}
    14. Dim bytesRec2 As Integer = handler2.Receive(bytes2)
    15. data += Encoding.ASCII.GetString(bytes2, 0, bytesRec2)
    16. If data.IndexOf("<firefox>") > -1 Then
    17. start_firefox()
    18. Exit While
    19. End If
    20. End While
    21. Console.WriteLine("Text received : {0}", data)
    22. Dim msg2 As Byte() = Encoding.ASCII.GetBytes(data)
    23. handler2.Send(msg2)
    24. handler2.Shutdown(SocketShutdown.Both)
    25. handler2.Close()
    26. End While
    27. End Sub

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