udpsend/open - wie kontrollieren ob die verbindung steht ?

  • moin, ich verwende udpsend um befehle zum server zu schicken.
    klappt auch so weit. jetzt gibts ja keine rückmeldung über die packete
    wie bei TCP ... so weit so gut. allerdings würde ich zumindest gerne
    feststellen ob die verbindung bzw das login zur gegenstellt/server überhaupt
    hergestellt wurde. wie mache ich das ? geht das überhaupt ?

  • Du könntest:

    • per Ping() überprüfen ob der Server/Client online ist:
      [autoit]
      Ping($sServerIP & ":" & $iPort)
      [/autoit]
    • oder eine Variable im Server erstellen:
      [autoit]
      Global $fClientConnected = False
      [/autoit]

      Und wenn sich ein Client mit dem Server verbinden will muss er zB: "acceptme" senden.
      Im Server wird dann überprüft ob dieser Text empfangen wurde.
      Danach wird die Variable $fClientConnected auf True gesetzt

    Nur ein paar Ideen ;)

  • danke für den versuch.
    dennoch kann hats nicht geholfen :(
    denn du gehst in beiden varianten von dingen aus die
    nicht immer zu treffen. zum einen hab ich nicht immer zugriff auf den server und kann somit
    keine programme installieren die irgendwie antworten oder variablem zurückgeben.
    zum anderen ist nicht jeder server immer über tcp ping-bar.
    hat jemand noch eine andere lösung ?

  • na ja gtaspider, so steht es zumindest im beispiel und so hab ich es auch gemacht.
    doch leider kommt nie eine fehlermeldung selbst, wenn ich eine verbingung zum einem
    server den es gar nicht gibt aufbaue (quasi mit fakedaten), noch beim senden mit falschem login daten.
    so weit ich weiss gibts bei UDP ja auch gar keine rückmeldung beim senden, aber das
    es auch beim verbindungsaufbaus so ist, wusste ich nicht.

    verbindungsaufbau:

    [autoit]

    UDPStartup()
    $ipxxx = TCPNameToIP(GUICtrlRead($DEDI_IP_HOST_Input))
    $opendUDPsocket = UDPOpen($ipxxx, GUICtrlRead($DEDI_PORT_Input))
    If @error <> 0 Then
    msgbox(262144,"Error" ,"Something went wrong while opening UDP socket! Error: "&@error)
    _enableAllHotkeys()
    Return
    EndIf

    [/autoit]


    senden:

    [autoit]


    $udpstatus = UDPSend($opendUDPsocket, "ÿÿÿÿ rcon "& GUICtrlRead($DEDI_PASSWORD_Input) &" "& $xxsString)
    If $udpstatus = 0 then
    msgbox(262144, "Error", "Error while sending UDP string! Error: " & @error)
    Return
    EndIf

    [/autoit]