JeuWeb - Crée ton jeu par navigateur
Opérations en Hors ligne - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Opérations en Hors ligne (/showthread.php?tid=1357)

Pages : 1 2 3 4 5 6 7


RE: Opérations en Hors ligne - niahoo - 08-05-2011

(08-05-2011, 11:18 AM)jean-baptiste a écrit : La web est d’ailleurs que très peu réel time

Ok.


edit: en plus c'est faux le web devient de plus en plus "réel time", a fortiori les bons jeux par navigateur.


RE: Opérations en Hors ligne - atra27 - 08-05-2011

J'ai fini mon prog en C++
Tout d'abord le lien:
http://www.archive-host.com/count-1003042-taskerqueue.bin

Pour l'installer:
1)placez le dans le dossier de votre choix...
"/bin/taskerqueue" par exemple...
2)Ensuite allez dans /etc/ et créez un dossier taskerqueue, puis creer un fichier texte vide nommé task.conf
3)Enfin, lancez simplement l'exécutable.

Comment sa marche?

La communication se fait par les sockets, vous pouvez donc jouer avec telnet pour voir ce que sa donne...
Le programme écoute sur localhost:1200 (cette config sera surement changeable par la suite)
Pensez a bloquer les connections provenant de l'extérieur dans votre pare-feu... (sécu)

Les commandes a envoyer via les sockets ressemblent un peu a celles de mysql.
Les commandes dispos sont:
CREATE shell_command AT timestamp ->retourne l'id de la nouvelle tache
DELETE id ->avec id l'id qui a été retourné a la création
SERVER STOP -> Stoppe le programme proprement
SERVER RELOAD -> recharge les taches depuis le fichier de config (aprés une édition manuelle ou depuis un autre programme par exemple)

J'aurais besoin de testeurs... Big Grin


RE: Opérations en Hors ligne - Sephi-Chan - 08-05-2011

Cool ! Comptes-tu distribuer la source, qu'on puisse regarder un peu la tronche que ça a avant de l'exécuter ?


RE: Opérations en Hors ligne - niahoo - 08-05-2011

quel est le format des messages pour les sockets ?

edit : need la source aussi j'aimerais bien le compiler sur mon pc


RE: Opérations en Hors ligne - atra27 - 08-05-2011

Je tiens a préciser que la source est plutot moche! De plus, ça compile pas sous windows (mais vu que les serveurs sont souvent sous linux, je compte pas m'occuper de ça avant un certain temps!)

Je devrais le refaire en utilisant fstream plutot que les fopen et compagnie... sa m'evitera de faire des conversions bizarres entre char et strings et de concerver les deux versions a chaque fois...

Je clean un peu le code et je met ça...

Le format des messages? simplement envoyer une des commandes au programme citées plus haut, qui va envoyer la réponce et fermer la connection.

Autre précision: ne jamais démarrer en root! la commande est executée via system() donc si jamais quelqu'un peut entrer ses commandes, sa peut faire un carnage!


RE: Opérations en Hors ligne - Sephi-Chan - 08-05-2011

C'est pas grave si c'est moche, c'est comme ça qu'on progresse ! Ce sont les gens qui ne montrent jamais de code qui sont/restent mauvais. Ne t'en fais pas. Smile


RE: Opérations en Hors ligne - niahoo - 08-05-2011

oui puis perso mon expérience du C++ se résume à hello world et au jeu ou il faut trouver un nombre en s'approchant.

Pour le format des messages je ne comprend pas trop mais généralement quand j'utilise un truc via les sockets on fait un truc du genre:
1 octet pour l'entete
2 octets pour la commande (1=creeer queue, 2=ajouter tache, 3=annuler queue, etc)
2 octets pour indiquer que le message fait X octets
X octets contenant le message
etc.


RE: Opérations en Hors ligne - atra27 - 08-05-2011

Oulaaa, je me suis pas relancé a créer un protocole genre TCP/UDP

Tu accède juste via l'api socket de ton language au port 1200 via le protocole TCP, tu envoie juste une chaine avec ta commande, tu catch le résultat puis tu ferme le socket! (la connexion se ferme aprés l'envoi de la réponce coté serveur, mais faut quand méme la fermer coté client)


<?php
/*
Ouverture d'un socket
AF_INET car c'est une communication via "internet" (localhost tout du moins)
SOCK_STREAM et SOL_TCP pour le protocole TCP
*/
$ressource = socket_create (AF_INET, SOCK_STREAM, SOL_TCP);
/*
Connection vers localhost, sur le port 1200
*/
socket_connect ($socket, localhost, 1200);
/*
Préparation du packet a envoyer
*/
$exectime=time()+60; //execution programmée pour dans 60 secondes
$buffer="CREATE php -r 'print_r($_SERVER);' AT ".$exectime; //on ecrit la commande, ici, on crée une tache pour executer la commande php -r 'print_r($_SERVER);'
socket_write ($socket, $buffer); // on l'envoie
/*
Enfin, on récupére le packet de retour:
*/
$return = socket_read ($socket, 255);
/*
Dans le cas de la commande create, elle revoie l'id de la tache, qui doit donc étre supérieur a 0!
*/
if(is_numeric($return) AND $return>0){
/*
Ici on stockera la valeur dans une table, au cas ou on aurai besoin de faire appel a la fonction DELETE plus tard!
*/
} else {
/*
La, y a une erreur! Filez dans les logs de votre machine pour voir ce qu'il a bien pu se passer... (en priant pour que l'erreur soit logguée...)
*/
}

Ps: c'est du pseudo-code, je garantis pas qu'il fonctionne, et je l'ai tapé a l'arrache dans la fenetre de réponse, depuis mes maigres souvenirs des sockets en php, sans le tester, et sans même le verrifier sous notepad grâce a la coloration syntaxique!


Edit: Le source: http://www.archive-host.com/count-1003367-maincpptar.gz
Je l'ai fait sous CodeBlocks, libre a vous de l'importer sous un autre IDE!

Pour le support, je serais sur l'IRC de jeuweb jusqu'a 22h environ.


RE: Opérations en Hors ligne - niahoo - 08-05-2011

mais en fait ce n'est pas vraiment une queue car si je lis ton code PHP j'ai l'impression que c'est l'utilisateur qui doit préciser à quel temps la tâche doit démarrer, donc doit gérer la logique de queue. Pour savoir que tel truc doit commencer à 19:30 je dois savoir que truc-1 finit à 19:30 et que comme truc-1 dure 45 secondes, je dois savoir que truc-2 finit à 19:29:15 pour savoir que truc-1 finit à 19:20 etc.



RE: Opérations en Hors ligne - atra27 - 08-05-2011

En effet sa ne gére pas encore les "listes"

cela dis, mon premier objectif était de faire simple.

Pour la suite, je pense en effet rajouter un systeme de pile... mais je bosse la dessus sur un projet plus clean, quitte a l'intégrer aprés (ouais la c'est déjà usine a gaz!)