TCPProblem beim Router

  • Hey Leute,
    ich hab wahrscheinlich des Klassische Problem mit dem TCP,
    hab schon einige Foren durchsucht / Sufu benutzt , konnt aber bisher noch keine Lösung finden.

    mein Ziel: "Nachrichten mittels TCP via Internet versenden"

    Ich besite eine fritz.box, hab diese intern Konfiguriert(Portfreigabe) auf:
    Protokoll : TCP
    von Port: 2000 bis Port 2000
    an Computer: "mein Computer"
    an Port 100

    jetzt müsste ich meine "ServerSeite" ja folgend aufbauen:

    [autoit]

    TCPStartup()
    $sock = TCPListen(@ipaddress1,100)

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

    While 1
    $con = TCPAccept($sock)

    if $con > 1 then
    $msg = ""
    while 1
    $msg &= TCPRecv($con,2096)
    if @error then ExitLoop
    WEnd

    if $msg <> "" Then
    MsgBox(0,"Angekommen!",$msg)
    Exit
    EndIf
    EndIf

    WEnd

    [/autoit]

    Bei TCPListen(), die eigene Ip des Rechners, also @ipadress1 und Port ja eigentlich 100 (da mein Router zu alles was ankmmt auf meinen PC bzw auf diesen Port weiterleitet) einstellen.


    Auf der "ClientSeite" hab ich nun folgendes:

    [autoit]

    TCPStartup()

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

    $msg = InputBox("nachricht","gib deine nachricht ein:")

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

    $sock = TCPConnect($IPDESROUTERS,2000)

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

    if $sock > 0 then
    TCPSend($sock,$msg)
    EndIf

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

    TCPCloseSocket($sock)

    [/autoit]


    Bei TCPConnect müsste ich doch nun bei der Variable $IPDESROUTERS ja dessen Ip eingeben (ermittelt mit wieistmeineip.de) und als Port 2000.

    Nun müssste mein Router ja eigentlich sämtliche Daten die er auf seinen Port 2000 erhält auf meinen Computer weiterleiten oder?
    Leider funktionier meine theorie nicht, hat jemand eine Idee woran es liegen könnte?

    mit freundlichen Grüßen
    Timo(:

  • Also. Erstens sollte dein TCPRecv eigentlich gar nie einen @error auslösen wenn alles richtig läuft. Der käme höchstens wenn du das Client Socket schliesst (bin ich mir nicht sicher).
    Ausserdem bin ich mir nicht ganz sicher ob du bei Listen nicht die öffentliche IP angeben musst (_GetIP()). Damit hab ich selber noch so meine Probleme...
    Versuch mal das zu ändern. Wenns dann immer noch nicht funktioniert, muss ichs mir noch mal anschauen ob ich noch was finde.

    Gruss Shadowigor

  • des mit TCRecv pass, da gibts nichts zu meckern;D
    Ich hab gerade versucht den Listen Anschluss auf die öffentliche IP zu setzen, bringt aber auch nichts...
    mir fällt aber auf das TCPConnect() relativ lange braucht bzw mir @error setzt.
    Also bekommt TCPConnect nichtmal eine Verbindung zum Router/Computer.

  • firewall läst das durch? bei ner fritz box muss der TCPport auf den skriptserver freigegenben werden

  • Wie blume schon schreibt, bei

    [autoit]

    $sock = TCPConnect($IPDESROUTERS,2000)

    [/autoit]

    $IPDESROUTERS ist verkehrt, da muss die externe IP-Adresse deines Servers rein (z.B. dyndns.org Adresse)

    also bei deinem "Server" auf http://www.wieistmeineip.de/ gehen - die Adresse dort musst du im Client verwenden.
    Wenn ich es richtig verstehe lenkst du auf der Serverseite den externen Port 2000 auf den internen Port 100 um.


    BLinz(ler)