Tcp verbindung halten ?

  • Hallo, ich wollte mich mal etwas naeher mit Tcp beschaeftigen doch schon am anfang tretten erste Probleme auf. -.-

    Spoiler anzeigen


    Ich will das jetzt so haben:
    So lange der Server an ist, soll ein Tryicon zusehen sein und erst dann geschlossen werden wenn ich es schliesse.

    2 Mal editiert, zuletzt von CX2500 (10. Februar 2009 um 15:07)

  • Zitat

    So lange der Server an ist, soll ein Tryicon zusehen sein und erst dann geschlossen werden wenn ich es schliesse.


    Ist das nicht automatisch so?!
    Bau halt noch ne While-Schleife ein, damit das Script nicht endet.

    Twitter: @L3viathan2142
    Benutze AutoIt persönlich nicht mehr, da ich keinen Windows-Rechner mehr besitze.

  • Oh, ok hat geklappt.
    Und wie kann ich jetzt einen Befehl an den Server schicken um den Rechner auszumachen ?

  • TCPSend
    Guck dir das Beispiel in der Hilfe an, das ist komplett.
    edit: Ich würde dir ja gerne helfen, aber ich darf nicht (einziges griffbereites Beispiel verstößt gegen Forumrules:()

    Twitter: @L3viathan2142
    Benutze AutoIt persönlich nicht mehr, da ich keinen Windows-Rechner mehr besitze.

    Einmal editiert, zuletzt von L3viathan2142 (9. Februar 2009 um 22:52)

  • Also
    1. TCPStartup
    2. TCPListen -->Socket
    3. TCPAccept -->auf verbindung warten
    4. in einer schleife TCPRecv um ankommende daten zu lesen

    Und dann z.b.

    [autoit]

    While 1
    $recv = TCPRecv($socket, 99999)
    If $recv = "shutdownpc" THen Shutdown()
    WEnd

    [/autoit]

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D

  • Client:

    Code
    TCPSend($MainSocket, "LOL")


    = " ==> Variable used without being declared.:
    TCPSend($MainSocket, "LOL")
    TCPSend(^ ERROR
    >Exit code: 1 Time: 0.433"
    Warum?


    Server:

    Code
    While 1
    $recv = TCPRecv($Mainsocket, 99999)
    If $recv = "LOL" Then
    	MsgBox(0,"","LOL")
    	EndIf
    WEnd

    Verbindung wird normal hergestellt doch ich kann nichts empfangen bzw. evlt hab ich mein Server auch falsch o_O?

  • Hallo,

    Funktionieren Server und Client aus diesem Beispiel?
    Deine Firewall sollte natürlich die Verbindung zulassen ;)

    ciao
    .Andy

  • Ja, es geht. Hab auch die Bsp. aus der Hilfedatei probiert. ( sind die selben).
    Doch wenn ich versuche die gesendeten Buchstaben in einer Msgbox auszugeben kommt iwie nichts. o_O
    Hab schon die Codes auch umgeschrieben & & &. aber nichts klappt. -.-

  • Hallo,
    poste mal dein Script pls
    ciao
    .Andy

  • Server versuch 1

    Spoiler anzeigen
    [autoit]


    $IPAddr = @IPAddress1
    $port = "65432"
    $Wort = "1"
    TCPStartup()
    $Mainsocket = TCPListen($IPAddr, $port, 9999)
    if $Mainsocket = -1 Then Exit
    While 1
    $Clientconnected = TCPAccept( $Mainsocket )
    If $Clientconnected >= 0 Then
    TrayTip("Erfolgreich verbunden!","Client und Server koennen nun Daten austauschen!",5)
    EndIf
    WEnd
    While 1
    $recv = TCPRecv( $Mainsocket, 9999 )
    If StringInStr($recv, $Wort) Then
    TrayTip("Empfangen!",$Wort&"wurde erfolgreich empfangen!"
    Endif
    WEnd

    [/autoit]


    Server versuch 2.

    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $IPAddr = @IPAddress1
    $port = "65432"
    TCPStartup()
    $Mainsocket = TCPListen($IPAddr, $port, 9999)
    if $Mainsocket = -1 Then Exit
    While 1
    $Clientconnected = TCPAccept( $Mainsocket )
    If $Clientconnected >= 0 Then
    TrayTip("Erfolgreich verbunden!","Client und Server koennen nun Daten austauschen!",5)
    EndIf
    WEnd
    While 1
    $recv = TCPRecv( $Mainsocket, 9999 )
    If $recv = "1" Then
    TrayTip("Empfangen!",$Wort&"wurde erfolgreich empfangen!"
    Endif
    WEnd

    [/autoit]


    Client 1. ( Aus dem Bsp.)

    Spoiler anzeigen
    [autoit]


    ;CLIENT! Starte mich, nachdem der Server gestartet wurde!!!!!!!!!!!!!!!
    ; siehe TCPRecv Beispiel
    #include <GUIConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    ; Startet den TCP Service
    ;==============================================
    TCPStartUp()

    [/autoit] [autoit][/autoit] [autoit]

    ; ; Richte einige wiederverwendbare Informationen ein.
    ;--------------------------
    Dim $szServerPC = @IPAddress1
    ; Richte die $szIPADDRESS des SERVERS ein. Der PCName wird in eine IP geändert.
    Dim $szIPADDRESS = TCPNameToIP($szServerPC)
    Dim $nPORT = 65432

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; Eröffnet eine Variable, um eine Verbindung anzugeben.
    ;==============================================
    Dim $ConnectedSocket = -1

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; Versucht, zu einem Server mit der IP und dem PORT 33891 zu verbinden.
    ;=======================================================
    $ConnectedSocket = TCPConnect($szIPADDRESS,$nPORT)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Dim $szData

    [/autoit] [autoit][/autoit] [autoit]

    ; Falls es einen Fehler gibt, wird er angezeigt
    If @error Then
    MsgBox(4112,"Fehler","TCPConnect schlug mit folgendem WSA-Fehler fehl: " & @error)
    ; Wenn es keinen Fehler gibt, dann erscheint wiederholt eine Inputbox zur Eingabe von Daten, die zum Server gesendet werden sollen.
    Else
    ;Fragt fortwährend nach Daten, die zum Server gesendet werden sollen.
    While 1
    ; InputBox für die zu versendenden Daten
    $szData = InputBox("Daten für den Server",@LF & @LF & "Gib Daten ein, die zum Server transferiert werden sollen:")

    ; Wenn die Inputbox geschlossen wird oder leer bleibt, wird die Schleife beendet.
    If @error Or $szData = "" Then ExitLoop

    ; Wir sollten Daten in $szData haben... Lasst uns versuchen, sie durch unseren verbundenen Socket zu versenden.
    TCPSend($ConnectedSocket,$szData)

    ; Wenn das Senden mit @error fehlgeschlagen ist, dann ist der Socket getrennt.
    ;----------------------------------------------------------------
    If @error Then ExitLoop
    WEnd
    EndIf

    [/autoit]
  • [autoit]

    $IPAddr = @IPAddress1
    $port = 65432
    $Wort = "1"
    TCPStartup()
    $Mainsocket = TCPListen($IPAddr, $port)
    if $Mainsocket = -1 Then Exit
    While 1
    $Clientconnected = TCPAccept( $Mainsocket )
    If $Clientconnected >= 0 Then
    TrayTip("Erfolgreich verbunden!","Client und Server koennen nun Daten austauschen!",5)
    exitloop
    EndIf
    WEnd
    While 1

    [/autoit][autoit][/autoit][autoit]

    $recv = TCPRecv( $clientconnected,2048)

    [/autoit][autoit][/autoit][autoit]

    If StringInStr($recv, $Wort) Then
    TrayTip("Empfangen!",$Wort,5000)
    Endif
    WEnd

    [/autoit]
  • Spoiler anzeigen
    [autoit]

    While 1
    $recv = TCPRecv( $clientconnected,2048)
    if $recv<>"" Then msgbox(0,"Übertragene Daten:",$recv)
    WEnd

    [/autoit]


    msgbox ftw^^