php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Udp Verbindung [game server]


 
nikbamert
06-12-2005, 17:12 
 
Hi!

Vorab mal, ich bin neu hier hehe:)

Naja das Problem bei meinem Script ist, dass es dem Server, bzw webspace funktioniert hat. NUn wollte ich meinen eigenen, hab mir folglich ne domain + 500mb angeschafft. Php Version ist auf beiden Servern dieselbe, beide laufen mit FreeBSD und Apache(falls das entscheidend ist) Nun, beim ersten Server bekomme ich brav eine Antwort, auf die Status Anfrage über UDP Port 28960. Beim anderen gibts selbst nach 10 Sekunden noch ein Timout:confused:


$fp = fsockopen("udp://$srvip", $srvport, $errno, $errstr);

fwrite($fp, "ÿÿÿÿ getstatus");
socket_set_timeout($fp, 2);

$serverstatus = fread($fp, 1000);
fclose($fp);
echo "$serverstatus";


Ich hab darauf natürlich dem Support mal ne mail geschrieben-ich wurde gefragt ob evtl url_fopen of On stehen müsse. Nun ja, nun steht es auf 'On', funktionieren tut aber trotzdem noch nix, immernoch timeout. Das es ein Firewall Problem seitens des Servers ist kann ich kaum glauben- es ist ja blos eine client anwendung, nichts das eine listen funktion bräuchte...naja vielleicht hat jemand von euch noch ne idee
:dontknow:

Auf hilfe hoffend:huep: :D

mfg Nik

 
onemorenerd
06-12-2005, 18:55 
 
Original geschrieben von nikbamert
Ich hab darauf natürlich dem Support mal ne mail geschrieben-ich wurde gefragt ob evtl url_fopen of On stehen müsse.
Die nahmen an, du operierst mit fopen().
Das es ein Firewall Problem seitens des Servers ist kann ich kaum glauben- es ist ja blos eine client anwendung, nichts das eine listen funktion bräuchte...naja vielleicht hat jemand von euch noch ne ideeVielleicht akzeptiert der angesprochene Server Verbindungen nur von ihm bekannten Hosts? :dontknow:

 
fackelkind
06-12-2005, 19:03 
 
Zwe4i Dinge:
Setz mal ein error_reporting (E_ALL); for dein Script
und
vergleiche einfach mal die phpinfo() von beiden Servern


Mehr fällt mir dazu auch noch nicht ein.

 
nikbamert
06-12-2005, 19:37 
 
hehe danke für die antworten erstmal:p Hab gleich mal alles gecheckt - das error reporting steht auf E_ALL, das script gibt aber noch immer keinen Fehler aus - bloss ein timout

Dann hab ich mir mal die phpinfos durch gesehen, alles dasselbe seit url_fopen nun auch 'on' ist:(

Vielleicht akzeptiert der angesprochene Server Verbindungen nur von ihm bekannten Hosts?
Falls du den Game Server meinst, dann kanns kaum sein, auf den hab ich zugriff mit remote desk etc...hab da nichts besonderes eingestellt.
:dontknow: Ich könnte zwar mal mit ethereal schaun' ob die Anfrage überhaupt ankommt-wäre jedoch merkwürdeig, dem anderen server gibt er ja auch prompt die Antwort zurück. Merkwürdig finde ich allerdings auch das PhP nicht mehr ausgibt, wenn keine Verbindung aufgebaut werden kann dann sollte mit E_ALL doch wenigstens stehen, dass es eben keine herstellen konnte..:motz: , stattdessen krieg ich überhaupt nichts..naja mal schaun ob der support noch was von sich hören lässt, oder vielleicht hat nochmals jemand ne idee?:p

mfg

 
nikbamert
07-12-2005, 12:54 
 
Ich würde das ganze ja gerne auf fopen() umschreiben, geht allerdings nicht da es ja ne udp verbindung ist:( Gibts denn eine option in der php.ini die etwas über fsockopen regelt? bei php.net steht dazu zwar

Diese Erweiterung definiert keine Konfigurationseinstellungen in der php.ini.

Aber was kanns denn sonst sein?:dontknow:

 
onemorenerd
07-12-2005, 13:26 
 
Bevor du lange rumdoktorst, wirf doch mal ethereal an, um zu sehen, was von dir raus geht und was zurück kommt.

 
nikbamert
07-12-2005, 13:30 
 
hab ich gerade gemacht :p

Aber da kommt nichts an, rein gar nichts. Was mich dann wieder verwundert ist, dass fsockopen allerdings brav ein socket bekommt; keine Fehlermeldung :eek: ...

edit: allerdings hab ich nur auf den game server remote desktop zugriff, nicht auf meinen webspace, daher kann ich dort leider nicht segen was passiert:( Wenns doch blos ne funktion in php gäbe um zu pingen...

 
nikbamert
08-12-2005, 00:08 
 
meeine güte..langsam hab ich echt kein plan mehr, ich habs nun direkt mit sockets versucht.


$fp = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
socket_connect($fp, "213.151.43.162", 28961);
socket_write($fp, "ÿÿÿÿ getstatus");
$servers = socket_read($fp, 1000);
socket_close($fp);

echo "$servers";


Wieder dasselbe, auf dem einen Server gehts, auf dem anderen passiert gar nix. Habs nun mit php5 sowie auch 4.3.11 ausprobiert, af dem anderen wills einfach nicht, OBWOHL sockets mit hinein compiliert wurden. Gibts nicht irgendwas, dass das ganze erklären könnte?:( :confused:

 
archie
08-12-2005, 11:31 
 
Probier mal das hier aus:

$fp = fsockopen("udp://".$ip,$port, $errno, $errstr, 30);
fwrite($fp, "ÿÿÿÿ". chr (0x02). "getstatus". chr (0x00));
$serverstatus = fread($fp, 4);
echo $serverstatus;

Und zwar spielt es eine Rolle, wievel Zeichen du überhaupt einlesen möchtest, wenn der Server nciht soviel liefern kann, wie du haben wils, geht da glaub ich gar ncihts.

 
nikbamert
09-12-2005, 17:53 
 
doch, es geht ja auf dem anderen server :P

allerdings hab ich nun wieder was neues. Das Socket spricht plötzlich mit mir, hehe

Warning: socket_read() unable to read from socket [61]: Connection refused in /home/nikbamer/public_html/xs.php on line 22

Nun ja, der Server am anderen ende ist es DEFINITIV nicht, der die verbindung ablehnt-ich werd den Support wohl mal genauer ausfragen müssen, die 'sind sich nicht ganz sicher, ob udp nach aussen gesperrt ist' (Zitat) und das soll ein Support sein:mad:

Naja, to be continued:p


Alle Zeitangaben in WEZ +2. Es ist jetzt 06:52 Uhr.