TCPsend funktioniert über I-net nicht

  • Hallo Leute,

    ich versuch gerade ein bisschen Server und Client über die TCP funktion in Autoit zu testen. Dazu habe ich diese Scripts aus diesem Tutorial als Grundlage verwendet.

    Hier die von mir abgeänderten Scripts für meinen Versuch.

    client:

    Spoiler anzeigen
    [autoit]

    TCPStartup() ; TCP wird initialisiert

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

    $iptoconnect = TCPNameToIP ("dyndns-des-anderen.pc")

    $socket = TCPConnect($iptoconnect, 4321) ; Versucht eine Verbindung zum Server aufzubauen und speichert die SocketID in "$socket" ab

    If $socket = -1 Then ; Wenn $socket = -1 ist, Fehlermeldung ausgeben
    MsgBox(16, "Error", "Die Verbindung zum Server konnte nicht hergestellt werden!") ; Fehlermeldung
    EndIf

    $sendedBytes = TCPSend($socket, "Hi. Dieser Text wurde vom Client gesendet :)") ; Sendet den Text an unseren verbundenen Socket

    If $sendedBytes = 0 Then ; Wenn der Rückgabewert von TCPSend(...) 0 ist, Fehlermeldung ausgeben
    MsgBox(16, "Error", "Das Paket konnte nicht gesendet werden.") ; Fehlermeldung
    EndIf

    TCPCloseSocket($socket)
    TCPShutdown()

    [/autoit]

    server:

    Spoiler anzeigen
    [autoit]

    TCPStartup() ; TCP wird initialisiert

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

    $hostip = TCPNameToIP (@ComputerName) ; <= Hier habe ich auch mit @ipadresse 1 , der IP im LAN und dem Hostname getestet, funtkioniert alles

    $mainsocket = TCPListen($hostip, 4321) ; Den mainsocket erstellen

    While 1 ; Endlosschleife
    $acceptedSocket = TCPAccept($mainsocket) ; Wir versuchen eine möglicher Verbindung anzunehmen

    If $acceptedSocket <> -1 Then ; Wenn $acceptedSocket ungleich -1 ist, ...
    $receivedData = TCPRecv($acceptedSocket, 1024) ; Wenn eine Socketverbindung hergestellt wurde, empfange ein Paket vom Client ($connectedSocket)
    MsgBox(64, "Nachricht empfangen!", "Es wurde eine Nachricht empfangen: " & $receivedData)
    TCPCloseSocket($acceptedSocket)
    EndIf
    WEnd

    [/autoit]

    Um vorab schon zu klären. Der Port 4321 ist im Router als TCP und UDP (sicher ist sicher) für den PC auf dem der Server läuft freigegeben.

    Folgendes tut sich auf wo ich schön langsam in die Verzweiflung komme. Im LAN wenn ich das script zwichen zwei PC's teste, funktioniert dieses script tadellos. Der PC mit dem Server bekommt die Meldung angezeigt. "Es wurde eine Nachricht empfangen: Hi. Dieser Text wurde vom Client gesendet :)" . So wie es ja beabsichtigt ist. Will ich das ganze über das I-Net testen, bekomme ich nur "Es wurde eine Nachricht empfangen:" in der Message Box angezeigt. So als ob der inhalt der gesendet werden soll unter demTisch landet und nie wieder zum vorschein kommt.

    Beim Server hab für den Socket schon alles mögliche probiert. Localhost, IP in rohform usw. Entweder gibt es keine Verbindung (Localhost z.B) oder es erscheint nur das Fenster wo der zu empfangende inhalt fehlt. Beim Client hab ich auch mit der Internetip getestet. Auch immer dasselbe.
    Desweiteren hab ich auch mal kurz ohne jegliche Firewall und Virenscanner getestet. Keine Veränderung... leider ...

    Jetzt hoff ich das mit jemand eine Ursache dafür nennen kann oder hilfe dazu gibt. Ich kann mir nicht vorstellen warum die Daten nicht ankommen, schliesslich erkennt der server ja das eine TCP Verbindung eingeht und im LAN funktioniert das script auch einwandfrei.

    Gruss

    Waidler


  • Hi, schau mal hier rein, und mache alles so, wie es beschrieben ist. Falls alles funktioniert, schön! Falls nicht, bitte hier einen detaillierten Fehlerbericht posten!

    Und erst dann an Programmen rumschreiben/verändern, wenn man auch weiss was man tut.
    "..Müsste eigentlich funktionieren, ich hab ja kaum was verändert!" ist die Fehlerursache Nr.1.

  • Zitat

    Das Problem ist, dass der Router deine Ports blockt.
    Enteweder du gibts deinen Port frei oder du musst es über irgendeinen Server machen wie es bei ICQ ist.

    Jetzt hab ich es extra reingeschrieben das der benötigte Port ja im Router als TCP und sogar zur Sicherheit freigegeben ist. Wie gesagt die Ports sind freigegeben und das forwarding ist auf den Zielrechner eingerichtet. Unter der Windows firewall ist der Server auch freigegeben. Ich hab sogar ohne jegliche Firewall getestet. Also firewall aus und den PC im router als exposed Host gesetzt , der gleiche Fehler wieder.

    Das Thema Portfreigabe usw. hab ich gründlichst durchgetestet.

    Der Server erkennt ja das eine TCP eingeht, Aber der Text wird anscheinden nicht empfangen. Das script hat bisher nur im LAN funktioniert.

  • Zitat

    Hi, schau mal hier rein, und mache alles so, wie es beschrieben ist. Falls alles funktioniert, schön! Falls nicht, bitte hier einen detaillierten Fehlerbericht posten!

    Und erst dann an Programmen rumschreiben/verändern, wenn man auch weiss was man tut.
    "..Müsste eigentlich funktionieren, ich hab ja kaum was verändert!" ist die Fehlerursache Nr.1.

    Router usw. hab ich ja alles gemacht wie es sich gehört. Was das Programme umschreiben angeht, ich denk das ich da schon wusste was ich da mache, da ich ledeglich die Adressen bearbeitet habe. und wie gesagt wenn ich das im LAN teste und hier die adressen eingebe (über ip oder in ip aufgelösten Hostname) funktioniert es einwandfrei. Der Server zeigt die Message Box an und die vom Client gesendete Nachricht. Will ich das ganze über das internet machen, bekomm ich nur die Message Box angezeigt aber ohne den vom Client gesendeten Text.

    PS: Vorweg, bevor einer postet ... google suche usw. Die suchmaschine hab ich schon querbett gefoltert mit suchanfragen in deutsch und in englisch und wenn ich was in diesen 4stunden gefunden hätte was mir bei dem problem hilft, hätte ich nicht in dieses Forum gepostet.

  • Zitat

    Du musst in deinem Ruter zulassen das jemand anderes reinkommen kann.
    Und deine Firewall evtl. runterdrehen.


    oje man will mich nicht verstehen... wie oft soll ichs noch schreiben. Router ist soweit freigegeben, also der PC bekommt die datenpackete aus dem Internet von router weitergeleitet und ich hab ja auch das ganze ohne irgendwelche firewalls und virenscanner ebenfalls getestet. Und da blieb das Problem das gleiche

  • Zitat

    Und da blieb das Problem das gleiche

    Da du es ja offensichtlich nicht nötig hast, die von mir im geposteteten Link beschriebene Anleitung nachzuvollziehen (oder hast du das etwas gemacht?) sondern deine offensichtlich aus einem anderen Forum abgegriffene fehlerhafte Implementierung bevorzugst, stelle ich dir hiermit die Frage: "Warum fragst du nicht denjenigen, von dem du das "Tut" benutzt hast?"
    Ich weiß, daß die in meinem Link gezeigte Vorgehensweise funktioniert, wieso soll ich dann dein Script auseinanderklabustern und dir deine Fehler unter die Nase reiben, wenn du die doch relativ einfach selbst finden könntest?

  • Das ganze Prozdere wie is in deinen von dir verlinkten Beitrag beschrieben wird hab ich schon durch. Schon vor deinem Post. (Sufu usw. ;) ) Wenns aber funktionieren würde (selbst mit dem script im Beitrag funktioniert es nicht, alles schon getestet. <= gleicher fehler wie beim anderen script. Fenster das eine nachricht da ist, aber kein inhalt der empfangen werden sollte.)

    Wie gesagt, ich hab das ganze prozedere durch mit dem Thema firewall & Co. Ich hab ja auch als exposed Host und ohne firewall es probiert (Client und Server). Wenn sich einer fragt was exposed Host ist. Bei fritzbox routern ist das eine funktion wo man jegliche Firewall für einen PC "deaktivieren" kann.
    Alles an Daten, was an die fritzbox aus dem internet kommt wird 1:1 weitergeleitet. Das bedeutet das der PC (weil firewall war auch ausgeschaltet zum testen) komplett ohne Firewall im Netz war.

    So wie will man dann den fehler finden, wenn man auf einen Post verwiesen wird, wo auch der gleiche fehler auftritt wenn auch das dortige "richtig gescripte" auch nicht funktioniert und denn gleichen fehler aufweist wie das was ich aus einem anderen Forum hab rausgeangelt.

    Ich dacht ich würd hier hilfe bekommen ... ich hab brav das script gepostet, eine Fehlerbeschreibung abgeliefert und auch alle meine abstellmassnahmen im vorherein bekannt gegeben.

    Wenn man schon schreibt "ohne firewall getestet, im rouer ist der port freigegeben" und man bekommt als antwort:

    Zitat

    Du musst in deinem Ruter zulassen das jemand anderes reinkommen kann.
    Und deine Firewall evtl. runterdrehen.

    und in dem "TUT" das mir gepostet wurde, steht auch das gleiche was ich schon gemacht hab. Router, DNS, IP des PC's hinterm Router usw.

    So und jetzt is immer noch offen warum es über das internet nicht funktioniert. Gehen die Datenpackete verloren (ping zum server ist 50ms, packetlosrate 0%)? oder sind 50ms zulange für den empfang? usw.

    Oder war jetzt bisher alles was ich geschrieben habe nicht verständlich ?(

  • Ok, dein Script funktioniert nicht.
    Die von mir verlinkte Vorgehensweise funktioniert bei mir einwandfrei. Bei anderen auch, bei dir nicht. Wenn (ich gehe davon aus) du "alles" getan hast um eine Verbindung herzustellen, sogar Daten empfängst, aber diese nicht anzeigen kannst, dann ist ja wohl etwas faul an DEINEM Script.
    Ich sah den Fehler schon, bevor (die zugegebenermassen nicht sonderlich hilfreichen) anderen Posts kamen. DESHALB MEIN LINK!
    Der sollte dir eigentlich die Augen öffnen! Daher auch mein Hinweis bzgl. Lernresistenz! Definitiv hast du dich NICHT an die beschriebene Vorgehensweise gehalten.

    Übrigens funktioniert dein "Server" nur sporadisch im lokalen Lan und auch auf dem lokalen PC. Der Grund ist klar....ich zitiere mich mal selbst...

    Zitat

    Wenn das alles funktioniert, DANN und erst DANN werden Scripte um/neu-geschrieben und auf eigene Bedürfnisse angepasst....und wenn die dann nicht funktionieren, dann liegt das nicht an der Technik, sondern am Unvermögen des Coders oder dessen Lernresistenz!

    Soviel dazu, der relevante Teil ist nun FETT und FARBIG markiert, wenn du es nun immer noch nicht peilst....

  • So um jetzt mal hier klar schiff zu machen...

    Es funktioniert auch nicht wenn ich das script aus deinem TUT das du mir gepostet hast 1 zu 1 verwende. Wie im den TUT beschrieben habe ich nur die Adressen getauscht. (So wird auch beschrieben ... )

    Damit du mir das mal glaubst (es wird mir immer noch unterstellt das ich mit der Tastatur wie die Axt im Walde in dem Script meine Emotionen auslasse, obwohls immer noch 1 zu 1 ist bis auf die Adressen)
    Gibts hier Bilder vom script und von dem Fenster, wo ich schon beschrieben habe, das kein Inhalt angezeigt bekomme.

    Serverscript

    Message Box auf dem Server, ohne inhalt (<= was mein fehlerbild ist )
    Client mit script und dem der Nachricht "Test" die am Server in der Message Box nicht auftaucht.

    Zitat

    Übrigens funktioniert dein "Server" nur sporadisch im lokalen Lan und auch auf dem lokalen PC. Der Grund ist klar....ich zitiere mich mal selbst...

    Soviel dazu, der relevante Teil ist nun FETT und FARBIG markiert, wenn du es nun immer noch nicht peilst....

    Ja so und nun ... thematik firewall => ausgetestet als ursache, thematik "vermurkstest script" nicht vorhanden, weil 1 zu 1 dem TUT entnommen und wie beschrieben durchgeführt.

    So dann dein schön rot gemachtes Zitat ... Wenn "du" weisst was ich falsch mache ... warum sagst du es nicht einfach ... oder liegt hier ein fehler vor der wie gesagt eine andere Ursache haben könnte...

    in diesem Sinne ...

    Einmal editiert, zuletzt von waidler (26. September 2010 um 19:11)