Communauté sur les Eggdrops - Community about Eggdrops
Socket TCL - Printable Version

+- Communauté sur les Eggdrops - Community about Eggdrops (https://forum.eggdrop.fr)
+-- Forum: Eggdrop et TCL (https://forum.eggdrop.fr/forumdisplay.php?fid=8)
+--- Forum: Scripts TCL (https://forum.eggdrop.fr/forumdisplay.php?fid=4)
+--- Thread: Socket TCL (/showthread.php?tid=1276)



Socket TCL - tow - 24/11/2012

Bonjour, je souhaiterai me connecter sur un page web en socket comme pour mIRC :

Code:
alias socket {
  sockclose socket
  sockopen socket www.domain.dot 80
}

On *:SOCKREAD:*:{
    var %read
    sockread %read
    echo -a %read (que je veux voir s'afficher en putlog sur l'eggdrop)
}

ON *:SOCKOPEN:*:{
  sockwrite -nt $sockname GET /url.dot HTTP/1.0
  sockwrite -nt $sockname Host: www.domain.dot
  sockwrite -nt $sockname User-agent: eggdrop TCL
  sockwrite -nt $sockname $crlf
}
Mais je n'ai trouvé aucun script qui me parle (quand je dis cela, c'est que je ne sais pas vraiment quoi et où chercher ça)
Quelqu'un aurait-il une piste ou un code pour m'aider à faire ce script ?


RE: Socket TCL - Artix - 24/11/2012

L'implémentation des sockets en TCL passe par la commande "socket" (surprise!)
Une fois connecté tu peux l'utiliser comme un flux standard (ex, des fichiers) avec puts/gets/read/fileevent etc.

Par contre si ce que tu veux c'est afficher une page web, c'est pas la bonne solution.
Les sockets en elles même ne gèrent que la communication jusqu'au niveau des sessions, et pas le protocole HTTP que tu fais passer par dessus en accedant aux sites webs.
Pour ça y'a un package standard dans TCL qui est (surprise, encore) http - et il fait tout ça. Cool ?
Tu peux check la doc du package avec man n http ou sur http://tmml.sourceforge.net/doc/tcl/http.html.

En gros, la procédure pour une requête est la suivante :
- Si besoin, tu configures ta connection avec ::http::config
- Tu demandes au package de lancer une requête avec ::http::geturl (pas oublier de mettre un -timeout, ca évite de planter l'eggdrop pendant 5 minutes !)
- Tu vérifies qu'elle s'est bien déroulée avec ::http::ncode ou ::http::status
- Tu récup le contenu de la page avec ::http::data
- Pas oublier de supprimer les variables non utilisées avec ::http::cleanup