TCP Send Client bleibt Hängen

  • hi ho ich versuche ein script zu schreiben das an eine ip etwas sendet egal erstmal was also ein leerer string im beispiel , nun trägt es sich zu das wenn ich eine ip die den server nicht geöffnet hat eintrage der client hängenbleibt als versuche er lange zu senden.
    obwohl ich versucht habe bevor ich sende zu überprüfen ob der client connecten kann:
    unten zu sehen das script des clients
    kann man prüfen ob das tcpconnect möglich ist oder nicht bevor man das tcpconnect startet?

    [autoit]

    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    HotKeySet ("{F5}","test")
    Dim $mainsocket1 = -1
    $ipadresse ="182.168.178.23"
    $port = "9300"
    TCPStartup()
    while 1
    sleep (99)
    wend

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

    Func test()
    $mainsocket1 = TCPConnect($ipadresse, $port)
    if $mainsocket1 <> -1 then
    TCPSend($mainsocket1, "")
    Else
    MsgBox(0,"jdflkj","kjfdlj")
    endif
    EndFunc

    [/autoit]

    Einmal editiert, zuletzt von XNeoX (7. März 2009 um 23:00)

  • [autoit]

    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    HotKeySet ("{F5}","test")
    Dim $mainsocket1 = -1
    $ipadresse ="182.168.178.23"
    $port = "9300"
    TCPStartup()
    while 1
    sleep (99)
    wend

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

    Func test()
    $mainsocket1 = TCPConnect($ipadresse, $port)
    msgbox(0,"Socket = "&$mainsocket1,"Error = "&@error)
    if $mainsocket1 <> -1 then
    TCPSend($mainsocket1, "")
    Else
    MsgBox(0,"jdflkj","kjfdlj")
    endif
    EndFunc

    [/autoit]
  • kann man prüfen ob das tcpconnect möglich ist oder nicht bevor man das tcpconnect startet?

  • naja die ip anpingen geht ja aber wenn kein tcp client der auf ne connection wartet gestartet ist wird er nicht connecten und bleibt wiieder ne zeit hängen

  • ist es wirklich nicht möglich zu überprüfen ob ein tcpconnect möglich ist bevor man connected
    das kann ich kaum glauben o.o

  • Connecten, wenn das nen Fehler gibt abbrechen.

    Padmak

    Zitat von Padmak

    Auf @error testen^^

    Wenn du dir den Thread durchgelesen hättest, wüsstest du auch, dass er genau bei Connecten hängen bleibt.
    Bevor du irgendwelche doofen Posts erstellst könntest du dir mal durchlesen um was es überhaupt geht. Das sind genau die Posts die 0 Qualität beeinhalten, aber hauptsache du bekommst viele Posts, darauf kommt es schliesslich an :cursing: .

    Laut Hilfe sollte der Befehl

    [autoit]

    Opt("TCPTimeout", ...)

    [/autoit]


    Die Zeit einstellen, wenn die TCP Funktionen abgebrochen werden, das klappt aber leider nicht.

  • Wenn du dir den Thread durchgelesen hättest, wüsstest du auch, dass er genau bei Connecten hängen bleibt.
    Bevor du irgendwelche doofen Posts erstellst könntest du dir mal durchlesen um was es überhaupt geht. Das sind genau die Posts die 0 Qualität beeinhalten, aber hauptsache du bekommst viele Posts, darauf kommt es schliesslich an :cursing: .


    Ich hab ihn mir eigentlich durchgelesen...
    Hab aber leider übersehen dass er es schon abgefragt hat :cursing:
    Ich weiß um was es geht, bei mir hat es so bie jetzt immer geklappt.
    Und deins sollte irgendwie auch gehen?
    Mir geht es nicht darum, viele Posts zu bekommen.
    Das ist eher nebensächlich, ich weiß nicht mal wie viele ich hab
    Ich will eigentlich hauptsächlich helfen...

    Padmak

  • Hi,

    die Abfrage in kürzerer Zeit funktioniert nicht.
    Das Problem ist die dynamische Berechnung der Antwortzeit vom Betriebsystem und von Routern und Providern gedroppte (fallengelassene) Antwortpakete.
    Das Problem wurde von mir HIER schon angesprochen, eine Lösung bzw Workaround habe ich bisher nicht finden können.

    ciao
    Andy

  • ist aber eigentlich ein entscheidendes Problem wenn man an ein ganzes Netzwerk senden will von denen aber nicht alle den TCPListening Client am laufen haben, hat man eine ungeheure verzögerung in der, der Client versucht ein Connect auf IPs aufzubaun die kein am laufen haben.
    (ich gehe hier davon aus das ich nur im LAN sende)

  • Nein, im internen Lan funktioniert das ja. Das könnte mit der microsoftschen dynamischen Zeitberechnung zusammenhängen. Das Betriebssystem weiß ja, dass du ins interne Netzwerk connecten willst, d.h. wenn von dort aber nach z.B. 500 ms keine Antwort kommt, dann ist der Serverprozess wohl nicht erreichbar.
    Im Internet sieht das wohl anders aus, da hast du auch wesentlich höhere Laufzeiten der Pakete, dies wird wohl bei der dynamischen Berechnung der Wartezeit berücksichtigt.