[PHP] Opstandige sockets

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 14:53

MueR

Admin Tweakers Discord

is niet lief

Topicstarter
Hey mensen, ik zit met een probleem. Ik ben een script aan het maken om gameservers te beheren via rcon. Nou gebruik ik hiervoor sockets. Het sturen van commando's en alles werkt al. Het probleem zit echter in de output.
De gameserver moet, na het ontvangen van het commando, een reactie teruggeven. Denk bijvoorbeeld aan het "map_rotate" commando. Dan meld de server netjes "Server changing map to mapnaam". Dit doet de server ook wel, maar om een of andere vreemde reden meent mijn script alleen output te hebben wanneer die output bestaat uit meerdere regels.
Zie ik in onderstaande functie iets belangrijks over het hoofd, of doe ik gewoon weer ontzettend stom en ben ik af. Overigens maakt deze functie deel uit van een class...
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// De functie om RCon commandos te sturen, maakt gebruik van bovenstaande _sendCommand
function rcon_server($command) 
{
    $socket     = fsockopen("udp://".$this->ip,$this->port, $errno, $errstr, 2);
    socket_set_timeout($socket,2);

    if (!($socket)) {
        return $errstr;
        exit();
    } else {
        $query = "\xFF\xFF\xFF\xFFrcon " . $this->rconpass . " " . $command;
        fwrite($socket,$query);
    }

    $data = '';
    while ($d = fread ($socket, 10000)) {
        $data .= $d;
    }
    fclose ($socket);
    $data = preg_replace ("/....print\n/", "", $data);
    return $data;
}

[ Voor 6% gewijzigd door MueR op 05-09-2005 16:48 ]

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

  • igmar
  • Registratie: April 2000
  • Laatst online: 03-09 22:58

igmar

ISO20022

Streams zijn standaard gebufferd. Zie http://nl2.php.net/manual...ream-set-write-buffer.php, of anders is de buffer te flushen met flush()

Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 14:53

MueR

Admin Tweakers Discord

is niet lief

Topicstarter
Hmm.. dat schijnt niet het probleem te zijn. Het lijkt wel alsof ie de eerste regel er gewoon uitfiltert, maar dan alleen bij 1-line results

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

  • SWINX
  • Registratie: Juni 2001
  • Laatst online: 23-07 18:19
ik heb wel eens gehad (misschien dat ik ook wel iets fout doe dan, maar dat terzijde) als je fread blijft opvragen, terwijl er geen output meer is, dat het dan niet werkt.
Als je bericht wat je terugkrijgt een standaard aantal regels is, kan je het daarop afvangen, of eerst kijken wat je terug krijgt als je maar 1 regel terugvraagd.

Mannen komen van Mars Tweakers, vrouwen van Venus Bokt