Winsock2-Verbindung über das Internet
-
Ebenfalls versucht diese Clientversion von meinem Rechner aus wieder zu meinen Rechner zu verbinden.
um Missverständnissen aus dem Weg zu gehen, dies hat auch nicht geklappt.
-
Dein Kollege braucht deine lokale ip gar nicht zu wissen. Nur die ip deines routers im netz.
Gib trotzdem auch wenn du nur einen pc angeschlossen hast im router den port frei dort musst dann ja auch deine lokale ip angeben. Die meisten router denken gar nicht darüber nach ob nur ein rechner angeschlossen ist wenn jemand eine verbindung zu ihnen aufbaut gucken sie in der port freigabe tabelle nach dem port wenn sie ihn gefunden haben leiten sie die anfrage an den Netzwerk pc weiter dessen ip dort angegeben ist.mfg tobZel
-
Ui, dass Router das nicht automatisch machen wenn nur ein Rechner dran hängt wusste ich nicht.
Das hat zwar nun etwas gedauert bis ich herausgefunden habe wie man das macht (stand doch tatsächlich nicht im Handbuch des Routers
), doch nun habe ich einen Port auf meinen Rechner freigeben können und es klappt nun alles wie es soll, danke 
Aber was mache ich, wenn ich dieses Prinzip nun zum Beispiel auf ein Spiel anwenden möchte und immer wieder Nachrichten bezüglich Spielerposition oder Dergleichen verschicken möchte. Also das einer der Spieler die Rolle des Servers übernimmt und der Gegenspieler die des Clienten.
Da kann ich doch von den Spielern nicht verlangen: "Schaltet doch mal bitte Port xy frei".Gibt es dafür vielleicht so Standardports oder sowas?
Es gibt ja Spiele da braucht man lediglich die IP des anderen Spielers eingeben und es klappt dann einfach so, ohne dass man da an den Ports rummachen müsste(nun gut, dass man die IP selbst eingeben muss ist wohl nur bei älteren Spielen so, doch ändert das ja nichts daran, dass es sowas gibt oO).Auf jeden Fall danke für die Hilfe, hat mir sehr weiter geholfen.
-
Du stellst eine TCP verbindung vom spieler zum server her. Jetzt kann der Server doch über die verbindung auch dem Client was schicken da brauchst nicht nochmal ne verbindung!
mfg tobZel
-
Ja, das klappt ja auch.
Einen kleinen Konsolenchat habe ich auch schon hinbekommen und werde wohl auch nicht so große Probleme haben ein kleines Spielchen wie Pong oder Snake für 2 Spieler hinzubekommen.
Doch das Problem ist, das klappt jetzt speziell bei mir, weil ich den Port freigeschaltet habe.Zur Zeit mache ich auch einfach so weiter und setze einfach vor-raus(Bindestrich steht nur da,weil das Wort ansonsten zensiert würde oO), dass der Port den die Spieler angeben auch frei ist.
Doch wenn ich mich zurück erinnere, gab es doch Spiele bei denen man einfach nur die IP eingeben musste und der Host in der Funktion als Server nichts an den Ports machen musste oder irre ich mich da?
Wenn wir zum Beispiel das Spiel Star Craft betrachten (Ist hierfür zwar nicht das beste Beispiel doch das einzige das ich persönlich kenne, sprich gespielt habe und nicht auch auf einem Internetserver läuft).
Dort wählt man sich ja zuerst auf ein Internetserver ein, dem Battlenet.
Doch wenn jemand ein Spiel erstellt, ist der Spielhost der neue Server wenn man so will, jeder der sich da einloggt wird mit dem Host verbunden, auf dem Battlenetserver wird nicht gespielt.Doch bevor ich mit Starcraft spielen konnte musste ich ja auch nicht erst an den Ports rummachen.
-
Die Frage ist also, muss ich jetzt einfach damit leben, dass der Hostspieler den Port den er verwenden möchte selbst freischalten muss oder gibt es da einen anderen Weg bei dem man vielleicht auf diese Einstellerei verzichten kann?
-
if(0445 == 293) { std::cout << "Weltuntergang..."; }Tja... mach dich bereit!
-
Was willst du mir jetzt damit sagen?
-
Er will dir damit sagen, dass du das if () {} auch gleich weglassen kannst, es sei denn, du willst mir weiß machen, dass 445 gleich 293. Im übrigen wird vor(r)aus nur mit einem r geschriben, und wurde deshalb zensiert.
-
if(0445 == 293) { std::cout << "C++ kennt Oktalzahlen!" << std::endl; } if(445 == 293) { std::cout << "Sicher nicht!" << std::endl; }addr.sin_port = htons(0445); // ist 0445 korrekt wenn der Port 445 gemeint ist?Nein, ist es nicht, 445 ist 445, 0445 ist 293.
Wäre mir aber auch nicht aufgefallen...