Frage zum Port-Fprwarding mit C++



  • Hallo liebe Forengemeinde,

    ich stoße gerade an die Grenzen des Programmierbaren^^ Nein im Ernst: Ich habe das Problem, dass ich auf meinem PC einen Server habe, der aus dem Internet angewählt werden soll. Nun habe ich mich belesen und gelernt, dass um ihn zu erreichen, beim Router ein Port geöffnet(geforwardet) werden muss. Habe ich auch gemacht über die Routersoftware und hat alles funktioniert.
    Ich möchte aber die Software auch an Freunde schicken, die dann ihren PC auch zum Server machen können. Nun meine Frage, gibt es ein paar C++ Befehle, um dies zu erledigen? Oder gibt es da einen anderen Weg? Ich kann nicht erwarten, dass jeder Ahnung hat, wie man einen Port forwardet.
    Einen externen Server möchte ich nicht benutzen. Wie machen es denn die großen Programme, die keinen externen Server verwenden?

    Danke für eure Hilfe 👍



  • Standard-C++ kennt
    - keine Ports
    - dementsprechend kein Port-forwarding
    - keine Router
    - dementsprechend schon gar keine Möglichkeit, bei irgendeinem Router, hinter dem dein Programm zufälligerweise grade läuft, das Port-Forwarding zu triggern.

    (=> falsches Forum)

    Du müsstest rausfinden, ob die fraglichen Router von Programmen angesteuert und ihre Konfiguration geändert werden kann. Normalerweise geht das über ein Webinterface, d.h. per http.
    Dann hast du das Problem, dass das bei verschiedenen Routern verschieden einzustellen ist, d.h. du müsstest eine Abfrage bauen und das forwarding zumindest für die gängigen Routertypen implementieren.

    Ich denke mal, dass es einfacher ist, deinen Kumpels beizubringen, wie sie das portforwarding manuell einstellen. Oder ihnen zeigst, wie man sowas ergoogelt.
    (Und falls du erwartet hast, dass du den Port heimlich forwarden kannst, um dir die Pornosammlung deiner Kumpels schicken zu lassen oder ähnliches - vergiss es. Ein Passwort für den Router brauchst du so oder so 🤡 )

    PS:

    BootLag-BootLag- schrieb:

    Wie machen es denn die großen Programme, die keinen externen Server verwenden?

    Sie erwarten, dass man das portforwarding entweder nach google-Lektüre hinbekommt oder jemanden kennt, der das schaffen könnte.


  • Mod

    Hmm, gibt's da nicht irgendwelche Möglichkeiten, falls UPnP aktiviert ist?

    Und irgendwelche anderen schlimmen Tricks muss es auch geben, Skype ist dafür berüchtigt, ohne Konfiguration durch den Anwender Firewalls zu umschiffen (zum Ärger aller Admins).



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (auch C++0x) in das Forum Rund um die Programmierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • SeppJ schrieb:

    Hmm, gibt's da nicht irgendwelche Möglichkeiten, falls UPnP aktiviert ist?

    Und irgendwelche anderen schlimmen Tricks muss es auch geben, Skype ist dafür berüchtigt, ohne Konfiguration durch den Anwender Firewalls zu umschiffen (zum Ärger aller Admins).

    Da hast Du doch keinen Server auf dem PC, sondern einen Client.



  • Belli schrieb:

    Da hast Du doch keinen Server auf dem PC, sondern einen Client.

    Skype stellt aber eine p2p Verbindung her.

    http://de.wikipedia.org/wiki/Stateful_Packet_Inspection
    http://en.wikipedia.org/wiki/Session_Traversal_Utilities_for_NAT

    pumuckl schrieb:

    (Und falls du erwartet hast, dass du den Port heimlich forwarden kannst, um dir die Pornosammlung deiner Kumpels schicken zu lassen oder ähnliches - vergiss es. Ein Passwort für den Router brauchst du so oder so 🤡 )

    Nicht, wenn er einfach einen Client startet. Der wird nicht geblockt 😉



  • cooky451 schrieb:

    Belli schrieb:

    Da hast Du doch keinen Server auf dem PC, sondern einen Client.

    Skype stellt aber eine p2p Verbindung her.

    Dazu benutzt es aber erst mal einen Server, an dem die Clients sich erst mal anmelden. Danach stellt der Server auf Anforderung die P2P - Verbindung zwischen den Clients her.



  • Belli schrieb:

    Dazu benutzt es aber erst mal einen Server, an dem die Clients sich erst mal anmelden. Danach stellt der Server auf Anforderung die P2P - Verbindung zwischen den Clients her.

    Trotzdem schießt Skype so ein Loch in die Brandschutzwand und kann so quasi einen Server starten, ohne den Router fragen zu müssen. Mit etwas Gefrickel sollte es also möglich sein, eine Verbindung ohne "echten" Server herzustellen. (Eigentlich lustig, sollte ich mal basteln :D)



  • Wie gesagt, zuerst mal muss jeder Client sich an einem Server anmelden. Und wenn der TE dieses Problem gelöst hat, dann kann er wahrscheinlich für seine Zwecke auch ohne weitere Tricks seine Ziele erreichen.

    Wenn Du es mal basteln möchtest:
    http://de.wikipedia.org/wiki/STUN



  • Belli schrieb:

    Wie gesagt, zuerst mal muss jeder Client sich an einem Server anmelden. Und wenn der TE dieses Problem gelöst hat, dann kann er wahrscheinlich für seine Zwecke auch ohne weitere Tricks seine Ziele erreichen.

    Er kann IP/Port aber einfach eingeben lassen. Da brauchste keinen Server mehr.

    Belli schrieb:

    Wenn Du es mal basteln möchtest:
    http://de.wikipedia.org/wiki/STUN

    Das ist nett, aber den Link hatte ich oben schon gepostet 😉



  • cooky451 schrieb:

    Belli schrieb:

    Wie gesagt, zuerst mal muss jeder Client sich an einem Server anmelden. Und wenn der TE dieses Problem gelöst hat, dann kann er wahrscheinlich für seine Zwecke auch ohne weitere Tricks seine Ziele erreichen.

    Er kann IP/Port aber einfach eingeben lassen. Da brauchste keinen Server mehr.

    Aha ... wo willste denn mit IP/Port hin, wenn nicht auf einen Server? Der Punkt ist doch, dass zunächst mal BEIDE Clients auch nur einen ClientSocket benutzen, und einen Server brauchen, zu dem sie connecten können.

    cooky451 schrieb:

    Belli schrieb:

    Wenn Du es mal basteln möchtest:
    http://de.wikipedia.org/wiki/STUN

    Das ist nett, aber den Link hatte ich oben schon gepostet 😉

    Kacke, hätte ich wohl mal draufklicken sollen ...



  • Belli schrieb:

    Aha ... wo willste denn mit IP/Port hin, wenn nicht auf einen Server?

    Na, auf einen anderen Rechner 😕



  • Ja, aber da muss doch ein Server(Socket) lauschen ...?!



  • Belli schrieb:

    Ja, aber da muss doch ein Server(Socket) lauschen ...?!

    Ne, die Clienten vera*schen sich gegenseitig 😃



  • Ich hoffe, das ist nicht ernst gemeint ...



  • Belli schrieb:

    Ich hoffe, das ist nicht ernst gemeint ...

    Ehm.. warum 😕

    (Klar kannst du etwas das "bind()" aufruft als Server bezeichnen, aber den Router kratzt das nicht.)



  • Router? Lass den erst mal weg.
    Wenn ich auf einem Rechner keine Software habe, die auf irgendeinem Port lauscht:

    cooky451 schrieb:

    Belli schrieb:

    Ja, aber da muss doch ein Server(Socket) lauschen ...?!

    Ne, die Clienten vera*schen sich gegenseitig 😃

    wie soll ich dann damit Verbindung aufnehmen?



  • cooky451 schrieb:

    (Klar kannst du etwas das "bind()" aufruft als Server bezeichnen

    Wie würdest Du es denn bezeichnen?



  • Belli schrieb:

    Router? Lass den erst mal weg.

    Hä? Es ging hier doch um den Router 😕



  • Naja, es ging darum, dass ein Server hinter einem Router nicht ohne Port-Forwarding erreichbar ist. DU wolltest eine Verbindung zwischen zwei Clients OHNE Server herstellen:

    cooky451 schrieb:

    Belli schrieb:

    Ja, aber da muss doch ein Server(Socket) lauschen ...?!

    Ne, die Clienten vera*schen sich gegenseitig 😃

    um Dir DAS zu vereinfachen - weil ich keine Vorstellung habe, wie das gehen soll - solltest Du DAS ZUNÄCHST erst mal ohne Router machen ...


Anmelden zum Antworten