TCP durch Router schleußen

  • Hallo,

    ich habe da mal eine frage!
    Für mein derzeitiges Projekt, verwende ich einen Server (Linux (Konsole) mit WINE) und halt Windoof für die Clientversion.

    Mein Server ist ein Root-Server von Server 4 You

    Nun möchte ich dass mein Server eine Verbindung herstellt mit einem Client, welcher sich hinter einem Router befindet.

    Das einzige was ich vom Client bekomme ist ja die IP des Routers.

    Schicke ich nun eine TCP-Anfrage und später ein TCP-Send zu der IP, weiß der Router doch gar nicht was zu tun ist (ist ja immerhin seine?!?

    Hoffe jemand kann mir hier mal weiterhelfen. Vllt steh ich grad auch nur auf der Leitung ^^

  • Wie Jam00 bereits sagte verbindet sich im Normalfall der Client zum Server.
    Die ServerIP ist ja auch bekannt und immer gleich

    Falls du es wirklich andersrum benötigen würdest, müsstest du NAT verwenden (Network Address Translation)
    Kannst ja mal dannach googeln.
    Wichtig ist aber:
    Alle "Offenen Türen" die dein Programm hat, haben dann auch andere.

    Deshalb bin ich generell eher dagegen wenn Leute am Router rumbasteln.

  • Das stimmt.

    Allerdings soll der Server ja wieder Informationen zurück schicken zum Client (und das sind relativ viele Informationen).

    Dadurch baut er doch wiederum eine Verbindung mit dem Client auf? Oder was versteh ich grad falsch :) ?

  • Also der Ser macht TCP-Aceept und TCP-Listen

    Der Client macht TCP-Connect

    Der Server macht TCP Rec

    Der Client macht TCP-Send

    Der Server verarbeitet Daten

    Der Server sendet nun über den Socket per TCP-Send Daten zurück. Der Client ist derweil bei TCP Recv.

    Danach entsteht TCP-CloseSocket

    Verbindung weg

    Was ist, wenn aber in der Zeit, während der Server Daten verarbeitet oder sendet ein odermehr Clients sich mit dem Server verbinden wollen?

    Weil der Server muss immer Daten aus Datenbank lesen. umformatieren und dann senden. Braucht Zeit und kann derweil keine Sockets erstellen. Richtig?

  • Zitat


    Was ist, wenn aber in der Zeit, während der Server Daten verarbeitet oder sendet ein odermehr Clients sich mit dem Server verbinden wollen?

    Weil der Server muss immer Daten aus Datenbank lesen. umformatieren und dann senden. Braucht Zeit und kann derweil keine Sockets erstellen. Richtig?


    Ohne Multithreading(vergess das am besten mit Autoit) wird das schwierig. Also praktisch gesehen hast du Recht.
    Wenn du den Sinn deiner Aktionen mal genauer erläutern würdest, gäbe es bestimmt noch alternative Lösungen.

    Aber der Ansatz einen Server zu mieten und anschliessend einen Client drauf zu installieren ist doch mal ein interessanter Ansatz. Demnächst gibt es bei server4you Clients zum mieten :D

  • Das Serverskript solltest du auf jeden Fall in einer Skriptsprache für Linux schreiben, die auch Threads unterstützt. Dann bekommt jeder Client seinen eigenen Serverthread (aber lege eine maximale Clientzahl fest, damit dein Server nicht überläuft)

  • ja das geht aber in autoit auch ganz gut stichpunkt software engineering und code optimierung.
    Also ich meien ohne therads das zu relaisieren^^