login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Gameserver status opvragen.

Offline Erwt - 05/06/2008 15:34
Avatar van ErwtPHP beginner Ok mijn vraag is dus, hoe moet dit en waar vind ik meer informatie op het internet. Ik wil me hier een tijdje mee bezig houden en wil uiteindelijk een php script kunnen maken dat de naam van het spel op kan vragen via ip en poort en daarna het level dat zich op dat moment afspeelt en het aantal personen dat erin zit. Ik heb op internet hele kleine stukjes gelezen maar echte tutorials of ideeen waar ik moet beginnen heb ik niet gevonden.

Als ik iets ben vergeten of een fout heb gemaakt, sorry. 

Alvast Bedankt,

4 antwoorden

Gesponsorde links
Offline Godlord - 05/06/2008 15:59 (laatste wijziging 05/06/2008 16:00)
Avatar van Godlord PHP gevorderde Wat voor een spel en welk spel? Een zelf gemaakt of een al reeds bestaand?

Sandernerd, waarom pingen ? Daarmee weet je eigenlijk enkel de duur van het verzenden van een pakket of een strook data.

Dit is een stuk uit een PHP script dat ik gemaakt heb om te kijken of een server aan staat of niet.
  1. <?php
  2. if (!extension_loaded('sockets')) { /* Zijn er wel PHP sockets beschikbaar? */
  3. /* Er zijn geen PHP Sockets beschikbaar of de extensie is niet ingeschakeld */
  4. echo 'Geen PHP sockets beschikbaar.';
  5. }
  6.  
  7. /* Maak een nieuwe socket aan */
  8. $socket = @socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
  9. if (!$socket) { /* Is de socket aangemaakt? */
  10. @socket_close($socket); /* Sluit de socket voor het geval dat */
  11. $err = @socket_last_error($socket);
  12. echo 'De socket kon niet aangemaakt worden (Error '.$err.': '.@socket_strerror($err).')';
  13. }
  14.  
  15. $resultaat = true;
  16.  
  17. /* Probeer de socket op de niet-blokkerende modus te zetten. */
  18. if (!@socket_set_nonblock($socket) && $socket) {
  19. @socket_close($socket); /* Sluit de socket voor het geval dat */
  20. $err = @socket_last_error($socket);
  21. echo 'De socket kon niet in niet-blokkerende modus gezet worden (Error '.$err.': '.@socket_strerror($err).')';
  22. }
  23.  
  24. $time = time();
  25.  
  26. /* Probeer een verbinding aan te maken */
  27. while (!@socket_connect($socket, '127.0.0.1', 2890) && $result && $socket) {
  28. $err = @socket_last_error($socket);
  29. if ($err == 115 || $err == 114) {
  30. if ((time() - $time) >= 25) { /* Hij stop na 25 seconden van proberen */
  31. @socket_close($socket);
  32. $result = false;
  33. }
  34. sleep(1);
  35. continue;
  36. } else {
  37. @socket_close($socket); /* Sluit de socket voor het geval dat */
  38. $err = @socket_last_error($socket);
  39. echo 'De socket kon niet verbinden (Error '.$err.': '.@socket_strerror($err).')';
  40. }
  41. }
  42.  
  43. /* Zijn we verbonden? */
  44. if ($resultaat) {
  45. @socket_close($socket);
  46. echo 'De server is online';
  47. } else {
  48. @socket_close($socket); /* Voor het geval dat */
  49. echo 'De server is offline';
  50. }
  51. ?>


Als je bv. informatie wilt hebben over het aantal spelers dan moet je pakketjes sturen dit kan je doen met behulp van PHP.net: socket_read en PHP.net: socket_write.

Citaat:
Ik neem aan dat je het spel dan zelf hebt gemaakt, anders gaat het niet.

Het gaat wel maar het probleem is dat je meestal eerst moet uitzoeken hoe het protocol werkt. Dat neemt meestal veel tijd in beslag als je enkel PHP kent of de basis van C of C++.


M.v.g. Godlord.
Offline Wim - 05/06/2008 21:54 (laatste wijziging 05/06/2008 21:56)
Avatar van Wim Crew algemeen blablabla, half minuutje zoeken:
http://gameq.sourceforge.net/

@sandernerd:
waarom beweer je dat het niet gaat? Als je een socket opent met de service beschouwd die service je toch als een client? Of je nu via een spel connecteerd of via php maakt geen **** uit, je moet gewoon de juiste commando's kunnen gebruiken; en die vind je allemaal op het internet...

Er is ergens een community, x-query heet ze (x vervangen door een andere letter, maar weet niet meer exact de welke...)
Offline Wim - 07/06/2008 02:02
Avatar van Wim Crew algemeen alle multiplayer-spelen hebben dit. tenminste die bvb een serverbrowser hebben. Anders kunnen ze zelf de data ook niet uitlezen om bvb de map te laten zien op uw schermke
Offline Godlord - 07/06/2008 16:26 (laatste wijziging 07/06/2008 16:26)
Avatar van Godlord PHP gevorderde
Sandernerd schreef:
ik neem aan dat niet alle spellen een functie hebben waarmee dit soort info wordt opgehaald.

Dat kan je uitvinden door dat spel dan te spelen. Hoe wil je anders het protocol dan überhaupt kennen? Lijkt mij vrijwel logisch dat eerst uitgezocht wordt wat men kan bij een specifiek protocol.

Je gaat toch ook geen browser maken als je het HTTP(S) protocol niet kent? Tenzij je één van die duizenden mensen bent die het IFrame control gebruikt van Microsoft dat slecht is om te gebruiken.


M.v.g. Godlord.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.175s