Autor Zpráva
Haca
Profil *
Zdravím, snažím se zpatlat skript co by vracel status serveru. Jedná se o hru Wolf ET. Když jsem nepoužil udp:// tak skript nefungoval vůbec a vypršel timeout a navíc sem apk dohledal že je tam to udp nutné. Teď to vrací číslo 17 a když status nahradím slovem players tak 18. Vůbec nechápu co to má znamenat, mělo by se vrátit asi toto:
map: goldrush
num score ping name            lastmsg address               qport rate
--- ----- ---- --------------- ------- --------------------- ----- -----


Skript:

<?
$sock = fsockopen("udp://localhost","27960");
$status = fwrite($sock,"/rcon test status");
echo $status;
fclose($sock);
?>
Enyeus
Profil
/rcon test status má 17 znaků.
Mike8748_
Profil *
no pripojis se na server, pres fwrite mu posles prikaz, ale uz jaksi nenacitas nejakou odpoved, misto toho vypisujes pocet bajtu ktery si tam odeslal

takze pred echo $status; skus jeste nejaky fread($sock,$status,8192); nebo tak neco. musis provest operaci cteni, aby si ziskal tvoji pozadovanou textovou odpoved
Haca
Profil *
aha teď na to koukám a je to pěkná blbost :]
jak bych to tedy měl udělat? předpokládám poslat /rcon test status a pak fgets()?
AM_
Profil
analogická funkce k fwrite() je fread(), ale fgets() by mohlo taky fungovat. Nejlepší máš to zkusit :)
Haca
Profil *
já to tu nějak zkouším ale nemůžu si s tím poradit :(

<?
$sock = fsockopen("udp://localhost","27960");
$send = fwrite($sock,"/rcon test players");
$status = fread($sock,$send);
echo $status;
fclose($sock);
?>
Haca
Profil *
to vrací ...disconnect nebo tak něco
Haca
Profil *
<?
$sock = fsockopen("udp://77.93.200.115","28000");
$send = fwrite($sock,"/rcon heslo status");
$status = fputs($sock,$send);
fclose($sock);
echo $status;
?>


Vrací 2.
Mike8748
Profil
kdyz uz, tak fgets, potrebujes cist, ne zapisovat(coz puts dela)

takze $status=fgets($sock);
AM_
Profil
trochu nechápu, proč té funkci fread() vnucuješ jako parametr $send - počet odeslaných bytů předchozím fwrite. jako horní hranici čtení bych dal nějaké vysoké číslo, nebo můžeš číst např. byte po bytu a čekat na konec řádku.
Pokud ti to ale vrací disconnected, máš asi stejně někde chybu, řekl bych, že příkaz musí končit odřádkováním:
$send = fwrite($sock,"/rcon heslo status\n");
mezon
Profil *
Hele dám ti radu:
Nepoužívej udp.Nevím proč ale udp vždy odpoví kladně ať se děje cokoliv.Takže tu IP piš bez protokolu.
A ověř si (když už použováš rcon) jestli je ten port co používáš určen pro rcon.

Já jsem se snažil udělat si Battlefield 2 server status.
Udp odpověděl kladně pokaždé.Nezávisle na stavu serveru.
Tak jsem se na udp vykašlal.Zadal jsem ip a serverový port --> Connection timed out.
Tak jsem zadal query port a výsledek byl stejný.
Tak jsem nakonec zadal rcon port a bingo!!! Funguje to. Už mám fajn online/offline ukazatel.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: