Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1639 connectés 

  FORUM HardWare.fr
  Programmation
  Divers

  script pour serveur tetrinet

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

script pour serveur tetrinet

n°1967019
bagu
Posté le 17-02-2010 à 22:32:52  profilanswer
 

Bonjour,
 
Je cherche le moyen d'afficher sur un de mes sites le nombre de joueurs présent sur mon serveur tetrinet.
Je ne trouve aucune documentation, ni aucun tuto, ni aucunes bonne âme pour m'indiquer le moyen d'y parvenir.
Pourtant de nombreuses personnes y parviennent, mais personne ne dis comment.
 
Un exemple ici : Hi,
 
http://c3p0.reverse.net/~sl/servers.html
 
Il va sans dire que j'ai essayé de contacter les webmaster de ces différents sites, et je pense raisonnablement qu'au bout d'un mois, je peux penser que je n'aurais jamais de réponses.
 
Sauriez vous m'aider d'une quelconque façon, sachant que mon ami google est muet sur le sujet après plusieurs semaines de recherches...
 
Merci d'avance.
 

mood
Publicité
Posté le 17-02-2010 à 22:32:52  profilanswer
 

n°1967028
Elmoricq
Modérateur
Posté le 17-02-2010 à 23:29:29  profilanswer
 

Aucune question de programmation n'étant posée, je ferme ce sujet.

 

Essaie de voir dans la documentation de tetrinet.

 

Edit : suite à discussion avec le PO, je réouvre. Cependant il faudrait apporter plus de précisions au sujet.
Pistes : fichiers de log tetrinet à parser, ou scan des ports ouverts ?


Message édité par Elmoricq le 18-02-2010 à 08:03:52
n°1967146
bagu
Posté le 18-02-2010 à 11:34:06  profilanswer
 

Pas de problème.
 
Alors, le serveur tourne sous jetrix qui est un serveur en java.
Les ports sont 31456,31457 et 31458 en tcp
 
Il y a bien des fichiers log, mais ce sont des fichiers d'accès uniquement.
 
Le serveur jetrix propose l'inclusion de ce qu'ils appellent "filtres" qui serait une voie afin de parvenir au but car en contact direct avec le serveur.
 
Les seules information pour cela sont ici : http://jetrix.sourceforge.net/dev-guide.php
 
D'après ce que j'ai pu lire/comprendre les ports ont l'utilisation suivante :
31456 : IRC
31457 : Tetrinet
31458 : tspec (accès en spectateur simple)
 
Après avoir fouillé partout sur internet, j'ai vu que le dev de jetrix avait en projet en 2005 de mettre cette fonction, mais il n'a jamais donné suite.
Il prévoyait que le serveur envoi ces données dans une base mysql afin que cela puisse être utilisé ensuite facilement.
 
Je pense, mais je peux me tromper, que la meilleure façon de procéder serait de faire l'un de ces fameux "filtres", bien que je ne vois pas ni comment faire, ni par ou commencer (java et moi n'étant pas du tout copains contrairement à php)
 
Donc est-ce que je me trompe de voie ?
Si oui, comment procéder ?
Si non, comment faire ?
 
Merci par avance.

n°1967201
bagu
Posté le 18-02-2010 à 13:52:58  profilanswer
 

Désolé du double post, mais j'ai des informations additionnelles :
 
Un fichier xml contenant les informations de mon serveur sont disponibles à cette adresse : http://servers.tetrinet.fr/server.xml?id=109
Mais je ne sais pas comment parser cela efficacement.
 
sinon, j'ai enfin réussi à avoir un contact avec le développeur de jettrix (serveur tetrniet java) qui m'indique ceci :
- Le nombre de joueurs est récupérable via un port spécial (cf http://jetrix.sourceforge.net/dev- [...] ction2-5).  
 
La deuxieme information m'intéresse sacrément, mais comment envoyer la fameuse commande sur le port 31457 par PHP ?
Car dans ce cas, j'envoie listuser sur le port en question, après je récupère les "name" et du coup, je peux non seulement avoir le nombre de joueurs, mais aussi leurs pseudonymes.
 
Merci


Message édité par bagu le 18-02-2010 à 13:54:45
n°1967536
bagu
Posté le 19-02-2010 à 11:57:46  profilanswer
 

Encore un poste, triple, beuark, mais vu le peu de réaction, cela apparait comme une sorte de up...
 
Je m'en suis en partie sorti avec le code suivant :

Code :
  1. //players information tetrinet
  2.  $reader = new XMLReader();
  3.  $reader->open('http://servers.tetrinet.fr/server.xml?id=109');
  4.  while($reader->read())
  5.  {
  6.   if ($reader->nodeType == XMLREADER::ELEMENT)
  7.   {
  8.    if ($reader->localName == 'tetrinet-server')
  9.    {
  10.     $nbplayer = (int)$reader->getAttribute('players');
  11.    }
  12.    if ($reader->localName == 'player' && $nbplayer != '0')
  13.    {
  14.     echo $reader->getAttribute('name');
  15.    }
  16.   }
  17.  }
  18.  $reader->close();
  19.  unset($reader);
  20.  // fin list utilisateurs tetrinet


 
ou http://servers.tetrinet.fr/server.xml?id=109 correspond aux information de mon serveur sur le site servers.tetrinet.fr
Cependant, deux inconvénients :
1-L'actualisation est toutes les minutes et plus lente qu'avec un module dans le serveur 'en direct'
2-Cela ralenti pas mal le chargement de la page
 
Pour le 1- il faudrait que je sache programmer en java (ce qui n'est pas le cas) donc les bonnes âmes sont les bienvenue.
Pour le 2- savez vous comment réalisez un chargement asynchrone ?
 
Merci d'avance


Message édité par bagu le 19-02-2010 à 12:38:21
n°1970079
bagu
Posté le 01-03-2010 à 02:25:20  profilanswer
 

J'ai résolu l'ensemble de mes besoins grâce à ce code (merci juju):
 

Code :
  1. function get_tetrinet_users(){
  2. $tableau=array();
  3. $fp = fsockopen("127.0.0.1", 31457, $errno, $errstr, 30);
  4. if (!$fp)
  5. {
  6.  echo "$errstr ($errno)<br />n";
  7. } else {
  8.  $out = "listuser".chr(0xFF);
  9.  fwrite($fp, $out);
  10.  while (true) {
  11.   $char = fgets($fp, 2);
  12.   if ($char != chr(0x0A))
  13.   {
  14.    $line .= $char;
  15.   } else {
  16.    if ($line == "+OK";)
  17.    {
  18.     break;
  19.    } else {
  20.     $chunks = explode(' ', $line, 2);
  21.     $tableau[] = substr($chunks[0], 1, strlen($chunks[0])-2);
  22.     $line = "";
  23.    }
  24.   }
  25.  }
  26.  fclose($fp);
  27. }
  28. return $tableau;
  29. }


ou on remplace 127.0.0.1 par l'adresse du serveur.
C'est infiniment plus rapide, et pour le chargement asynchrone, j'ai utilisé prototype.
 
Je poste cela ici car je sais ne pas être le seul à chercher, et que cela servira à d'autres...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Divers

  script pour serveur tetrinet

 

Sujets relatifs
[Tomcat] Mon serveur ne se lance pasTexte d'un script en plus petit..
Existe-t-il un script JS pour modifier le code source d'une page html?Besoin d'aide pour un script
Script pour recuperer des données dans une page .htmComment écrire l'uptime du serveur dans une page php ?
info script de récuparation d'adresse ip publicscript télechargement
Script pour créer une sessionScript pour vote automatique pour un Concours...
Plus de sujets relatifs à : script pour serveur tetrinet


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR