Programm auf Computer steuern..

  • VB.NET

Es gibt 31 Antworten in diesem Thema. Der letzte Beitrag () ist von backtothetoast.

    Programm auf Computer steuern..

    Hey Leute,

    ich habe vor ein Programm, dass auf meinem zweiten Rechner ist, der immer läuft über ein 2. Programm das zb. auf meinem Handy oder Netbook ist zu steuern. Dieses Programm beinhaltet zb. einen Texteditor oder eine Funktion, womit ich irgendetwas wichties updaten muss. Mann könnte dies zwar über Skype machen, jedoch möchte ich soetwas gerne ohne Skype oder ähnliche Software machen. Habt ihr da ein paar Ideen oder sogar Codeschnipsel?

    lg.

    backtothetoast schrieb:

    Ich habe mir mal die Methode bzw. den ersten Thread angeschaut, da ich diesen eher verstanden habe. Nun eine Frage, sollte man einen Port freigeben müssen, und keine Rechte dazu hat.. kann man ab dort irgendwie tricksen?
    Doch kann man.
    Jedoch brauchst du einen gemeinsamen Nenner. Hierfür kann ich einen (auch kostenlose) Webserver empfehlen. Die Methode ist jedoch etwas schwieriger.

    Beide rufen ein PHP-Script auf und übertragen ihre IP per POST. Einer ist (logischerweise) schneller als der Andere. Der Schnellere hat nun das Pech, dass er das Script so lange aktualisieren muss, bis der andere auch soweit ist. Der Langsame bekommt dann die IP des Schnelleren und ruft das zweite PHP-Script auf. Nachdem die andere IP auch angekommen ist, geht er auch aufs zweite Script.
    Das zweite Script sucht (beim ersten Aufruf) sich ne Uhrzeit aus (ich würde 5-10s nach der aktuellen Uhrzeit empfehlen) und gibt bei allen weiteren Aufrufen die Anzahl der Sekunden an, die nötig sind um die ausgesuchte Uhrzeit zu erreichen.

    Man braucht das zweite Script nur ein (oder zweimal) aufrufen, den Rest kann mit einem Timer lösen.
    Sobald die Timer ihr Event feuern versuchen beide gleichzeitig eine Verbindung zueinander herzustellen (natürlich aufm gleichen Port) und somit ist die Firewall überwunden).
    Dieses gleichzeitige miteinander Verbinden wird als "Lochtrick" bezeichnet.

    In der Praxis habe ich es leider noch nie verwendet. Nur das "synchronisieren" über PHP habe ich schon mal für Leitstellenspiel gemacht - das Ganze funktioniert überraschend gut. Die Differenz beträgt etwa <0,5s (und dabei habe ich die Pings usw. nicht abgezogen).



    Mfg.
    SAR
    Moin,

    ich wollte Heute mich mit einem lokalen Server mit der TCP Methode über einen Client verbinden. Jedoch kam folgende Meldung:

    Was kann ich machen? Den Port habe ich nicht freigeschaltet, da ich dies auch nur Lokal probiere und dies auch nicht nötig sein wird.

    EDIT: Ich merke gerade, dass ich den entsprechenden Code vergessen habe:

    VB.NET-Quellcode

    1. Imports System.Net.Sockets
    2. Imports System.IO
    3. Module Module1
    4. Dim x As Object
    5. Dim stream As NetworkStream
    6. Dim streamw As StreamWriter
    7. Dim streamr As StreamReader
    8. Dim Client As New TcpClient
    9. Dim IP As String = "93.232.135.243"
    10. Dim Port As Integer = 4000
    11. Sub Main()
    12. Console.Title = "TCP Client"
    13. Console.Clear()
    14. s:
    15. x = Console.ReadLine()
    16. Select Case x
    17. Case "commands"
    18. Console.WriteLine("clear connect disconnect update")
    19. Console.WriteLine("shutdown restart logout rom")
    20. Console.WriteLine("ktw kint end exit")
    21. GoTo s
    22. Case "connect" 'connecting to server
    23. Connect()
    24. GoTo s
    25. Case "disconnect" 'disconnecting from server
    26. Disconnect()
    27. GoTo s
    28. Case "update" 'updating server
    29. Update()
    30. GoTo s
    31. Case "shutdown" 'shutdown computer
    32. Shutdown()
    33. GoTo s
    34. Case "restart" 'restart computer
    35. Restart()
    36. GoTo s
    37. Case "logout" 'logout computer
    38. Logout()
    39. GoTo s
    40. Case "clear"
    41. Console.Clear()
    42. GoTo s
    43. Case "exit"
    44. Exit Sub
    45. Case Else
    46. Console.WriteLine("no such command '" & x & "'")
    47. GoTo s
    48. End Select
    49. End Sub
    50. Sub Connect()
    51. Client.Connect(IP, Port) 'Client verbindet sich mit IP: 192.168.111.17 und Port 4000
    52. If Client.Connected Then
    53. stream = Client.GetStream ' Stream wird auf Client verwiesen
    54. streamw = New StreamWriter(stream) ' Stream zum Senden wird deklariert
    55. streamr = New StreamReader(stream) ' Stream zum Empfangen wird deklariert
    56. Login() ' Sub Login
    57. Else
    58. Console.WriteLine("connection failed")
    59. Main()
    60. End If
    61. End Sub
    62. Sub Disconnect()
    63. Client.Close()
    64. End Sub
    65. Sub Update()
    66. Send("update")
    67. End Sub
    68. Sub Shutdown()
    69. Send("shutdown")
    70. End Sub
    71. Sub Restart()
    72. Send("restart")
    73. End Sub
    74. Sub Logout()
    75. Send("logout")
    76. End Sub
    77. Sub Login()
    78. Try
    79. ClientSend("connect")
    80. If ClientRecieve() = "ok" Then 'Oder sonst irgend was. Ist nur ein Beispiel für einen Login
    81. Console.WriteLine("connected")
    82. Main()
    83. Else
    84. Exit Sub
    85. End If
    86. Catch
    87. Console.WriteLine("connection failed")
    88. End Try
    89. End Sub
    90. Sub ClientSend(ByVal text As String)
    91. streamw.WriteLine(text)
    92. streamw.Flush()
    93. End Sub
    94. Function ClientRecieve() As String
    95. ClientRecieve = streamr.ReadLine
    96. End Function
    97. Sub Send(ByVal text As String)
    98. ClientSend(text)
    99. If ClientRecieve() = "ok" Then
    100. Console.WriteLine(text & " succesfuly done.")
    101. End If
    102. End Sub
    103. End Module

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

    Was ist eigentlich der Unterschied and UDP und TCP? Was wäre besser?
    EDIT: Bisher läuft mein Client ganz gut, jedoch gibt der Server folgende Fehlermeldung aus:

    Quellcode

    1. Normalerweise darf jede Socketadresse (Protokoll, Netzwerkadresse oder Anschluss) nur jeweils einmal verwendet werden.


    Als IP des Servers wird mir 0.0.0.0 ausgegeben. Code des Servers:

    VB.NET-Quellcode

    1. Imports System.Net.Sockets
    2. Imports System.IO
    3. Imports System.Net
    4. Public Class Form1
    5. Dim stream As NetworkStream
    6. Dim streamw As StreamWriter
    7. Dim streamr As StreamReader
    8. Dim Server As TcpListener
    9. Dim client As New TcpClient
    10. Dim ipendpoint As IPEndPoint
    11. Dim mainthread As Threading.Thread
    12. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    13. mainthread = New Threading.Thread(AddressOf mainserver)
    14. mainthread.Start()
    15. ipendpoint = New IPEndPoint(IPAddress.Any, 80)
    16. MsgBox(ipendpoint.Address.ToString)
    17. End Sub
    18. Sub mainserver()
    19. Try
    20. Server = New TcpListener(ipendpoint)
    21. Server.Start()
    22. client = Server.AcceptTcpClient
    23. stream = client.GetStream
    24. streamr = New StreamReader(stream)
    25. streamw = New StreamWriter(stream)
    26. While True
    27. Select Case streamr.ReadLine
    28. Case "connect" 'DO NOT FORGET THIS
    29. Send("ok")
    30. MsgBox("client tryed to connect. acceptet.")
    31. Case "rom"
    32. Send("ok")
    33. MsgBox("client tryed to rom. acceptet.")
    34. End Select
    35. End While
    36. Catch ex As Exception
    37. MsgBox(ex.Message)
    38. End Try
    39. End Sub
    40. Sub Send(ByVal text As String)
    41. streamw.WriteLine(text)
    42. streamw.Flush()
    43. End Sub
    44. Private Sub Form1_Closing(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.FormClosing
    45. Server.Stop()
    46. Try
    47. mainthread.Abort()
    48. Catch
    49. End Try
    50. End Sub
    51. End Class


    lg.

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

    etwas lustiges wäre es, es mit skype zu steuern :D
    [VB.NET] Computer über Skype "steuern" (Using Skype4Com.dll)

    wäre auch eine möglichkeit.
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    verständlich
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    warum hat eigentlich bisher noch keiner in frage gestellt, warum er nicht einfach vnc o.ä. nutzt?

    bisher könnte das genausogut die vorlage für ein RAT sein. dafür spricht u.a. die tatsache, dass er auschließt das serverseitig ports geöffnet werden... (die würde jmd der mit dem RAT infiziert wurde logischerweise nicht an seinem router freischalten wollen.)