Okay, ich glaube, ich habe einen Weg gefunden, mich an der Socket-Sperre vorbeizumogeln. *g*
Spieler B sendet eine Anfrage nach einer php-Seite an den Webserver. Die php-Datei wiederum geht in eine Schleife, und liest aus, ob Spieler A eine Nachricht auf dem Server hinterlassen hat. Sobald A eine Nachricht sendet, wird diese von der php-Datei gefunden, der Inhalt der Nachricht an B weitergeleitet, und das Script beendet.
Somit sendet B nur einen einzigen Request, und nur, wenn sich wirklich eine Nachricht eingefunden hat, wird ein neuer Request gesendet, anstatt dies andauernd tun zu müssen. Ist alles noch viel wackeliger, als mir lieb wäre, aber schonmal besser als nichts...
Ist denn das Preis-/Leistungsverhältnis so schlecht, wenn ich 12 € im Jahr zahl, und dafür dann eben ein paar Dinge nicht bekomme (wie eine Möglichkeit, die php.ini zu ändern, gnaaar! ^^)?
Ich kenn mich bei den Angeboten einfach nicht so aus, und wüsste nicht, was für ein Preis da angemessen wär. o.o
Mau...
Ich verzweifel hier noch mit dem Mist. ^^
Okay, ich nutze jetzt UDP als Übertragungsprotokoll und UDP hole punching, um vom einen Computer auf den anderen durchzukommen. Sollte im Prinzip so laufen.
Aber wieder stehe ich genau an der Stelle, an der ich schon mit TCP stand: im lokalen Netzwerk läuft alles wunderbar, nach einigem hin und her wird eine stabile „Verbindung“ über UDP aufgebaut (ich weiß, dass es da keine richtigen Verbindungen gibt, aber es werden eben ständig Pakete hin und her geschickt) und alles läuft fein.
Nehme ich dasselbe Programm nun, und lass es auf das groooße weite Internet los, passiert gar nichts. Es können so viele holes gepuncht und Pakete gesendet werden, wie man will, auf beiden Computern die das Programm laufen lassen kommt einfach kein einziges UDP-Paket an.
Die IP-Adresse an die die Pakete gesendet werden ist tatsächlich die externe Adresse, zumindest auf meinem Computer habe ich das Programm auch explizit durch die Firewall erlaubt (das heißt, selbst wenn die Firewall auf der anderen Seite bockig ist, sollten die Pakete wenigstens in eine Richtung durchkommen), und ich bin echt mit meinem Latein am Ende.
Gibt es irgendeinen typischen Anfängerfehler, der so trivial ist, dass niemand auf die Idee gekommen sein könnte, mich davor zu warnen, auf ihn hereinzufallen, den ich aber ob meiner totalen Blauäugigkeit übersehen haben könnte?
Sorry für den Doppelpost, aber es haben sich neue Erkenntnisse ergeben. ^^
Wenn ich mein Programm von der Uni aus nutze, und mit irgendwem in Deutschland spiele, läuft der UDP-Modus wunderbar, in beide Richtungen werden fröhlich Pakete versandt, Regenbogen, Ponies, was immer man will - es ist also nicht nur das lokale Netz, in dem das läuft. ^^
Wenn ich mein Programm aber zu Hause starte, habe ich noch immer dasselbe Problem - es kommen keine Pakete an, weder bei mir, noch beim Gegner. Kann es sein, dass bei mir zu Hause ein garstiger Router steht, der einfach nichts durchlässt? (Ich könnte dessen Konfiguration nicht ändern, selbst wenn ich wollte, da er mir nicht gehört, sondern dem ganzen Haus und insbesondere dem Hausbesitzer...)
Also, was kann ich tun, dass meine UDP-Pakete da durchkommen? Und nein, Pakete gehen nichtmal raus durch diese komische Verbindung. Dass sie nicht reingehen ist ja komisch genug, aber nicht rausgehen... ?