TUTORIAUX SOCK MIRC

PaRaBoL Messages postés 18 Date d'inscription lundi 6 mai 2002 Statut Membre Dernière intervention 6 septembre 2003 - 2 juil. 2002 à 15:21
GFACTION Messages postés 199 Date d'inscription lundi 19 mai 2003 Statut Membre Dernière intervention 7 avril 2005 - 28 juil. 2004 à 12:58
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/14330-tutoriaux-sock-mirc

GFACTION Messages postés 199 Date d'inscription lundi 19 mai 2003 Statut Membre Dernière intervention 7 avril 2005
28 juil. 2004 à 12:58
Je pense que tu aurais pu t'appliquer pour l'orthographe, et j'aime pas trop, c'est pas mal le désordre...
Il faudrait plutôt respecter un ordre chronologique comme ceci, ça aide à comprendre.

Imaginons que nous voulions envoyer du texte entre deux mIRC différents... (c'est un scénario comme un autre) m2 veut se connecter à m1 pour lui envoyer du texte.

Sur m1 (le premier mIRC) :

Il faut écouter un port pour que m2 puisse se connecter.
/socklisten m1_server 256
Par exemple. m1_server est le nom de la socket qui ne va rien faire d'autre que d'écouter un port.

Toujours coté m1 (donc serveur), pour accepter la future connexion de m2, il faut placer un évenement 'socklisten'.

on *:socklisten:m1_server: {
sockaccept m2
echo -a m2 vient de se connecter à m1
}

J'ai spécifié dans l'event : m1_server, qui est le nom de la socket qui va listen ce port, c'est donc à lui que nous allons faire référence.
En suite il faut donner un nom à la connexion de m2. Je l'ai appelé tout simplement m2.

Pour recevoir ce que nous envoit m2, et l'afficher, s'il le faut, il faut donc placer un évenement 'sockread'.

on *:sockread:m2: {
sockread %sr
tokenize 32 %sr
if ($1 == AFFICHE) {
echo -a ( $+ $sockname $+ ) : $2-
}
}

mIRC fait appel à cet event lorsque des données sont reçues de m2.
On stock dans %sr ce que m2 nous envoit.
Pour éviter de faire des $gettok à rallonge et donc de ralentir le serveur, je tokenize %sr, pour pouvoir accéder à %sr comme suit: $1 = $gettok(%sr,1,32) etc...
En fait, tokenize 32 %sr, split %sr en fonction du chr 32, donc "la phrase" est coupée à tous les chr 32. (le 32 c'est le caractère espace)

En suite, il faut élaborer un petit protocole, ici extrêmement simple, il ne réside qu'en une seule commande : AFFICHE.

Dès que m1 recoit : "AFFICHE salut ! :o", il va afficher dans sa fenêtre active : "(m2) : salut ! :o"
Ici, ça ne sert à rien d'utiliser $sockname, car il ne peut pas être autre chose que m2.

Maintenant, il faut gérer du coté m2.

Pour se connecter à m1, il faut ouvrir une socket.
/sockopen m1 127.0.0.1 256
Ouvrir la connexion à l'adresse de la machine où se situe m1, en l'occurence, la même machine (loopback 127), et sur le port qu'écoute m1, c'est à dire le 256.

En suite, il faut détecter quand la connexion est acceptée, autrement dit, quand m1 effectue son /sockaccept.

on *:sockopen:m1: {
echo -a Connexion acceptée par m1
sockwrite -tn m1 AFFICHE Voilà, je suis connecté :p
}

Donc, une fois la connexion ouverte, on affiche sur m1 un petit texte :)
/sockwrite permet d'envoyer des informations à une socket.

Dans ce cas basique, le serveur n'envoit rien, donc on n'a pas ressenti le besoin de mettre un on sockread pour m2, mais il est tout à fait possible de le faire, et cela fonctionne de la même manière.

Voilà, je viens de faire ce "tutorial", et j'estime qu'il est tout de même plus clair.

Bye
vbtom Messages postés 229 Date d'inscription dimanche 3 juin 2001 Statut Membre Dernière intervention 5 octobre 2003
30 sept. 2003 à 20:46
Dommage, il manque la description des erreurs sur les sockets. Justement ce qu'il me fallait :(
DrAzZiK69 Messages postés 117 Date d'inscription lundi 17 mars 2003 Statut Membre Dernière intervention 8 décembre 2003
21 mars 2003 à 17:44
arff je trouve que les sockets c dur.. ki pouré maider? mail: DrAzZiK@Club-InterNet.fr Pacque jmré bien savoir mé a chak fois que j'essaye de me konec à un serveur ca ping time out link closed..
Bon AllEz @+ Me Amigos!
PaRaBoL Messages postés 18 Date d'inscription lundi 6 mai 2002 Statut Membre Dernière intervention 6 septembre 2003
31 juil. 2002 à 21:19
ErAzEr le site c ircfr pas mircfr lol IRC c pas ke mIRC... mirc n'est kune minoriter... la majoriter des bon codeur sont sous nux ^^
cs_max12 Messages postés 1491 Date d'inscription dimanche 19 novembre 2000 Statut Modérateur Dernière intervention 7 juillet 2014
18 juil. 2002 à 14:33
Cool ton tuto
cs_ErAzEr Messages postés 42 Date d'inscription lundi 9 octobre 2000 Statut Membre Dernière intervention 12 novembre 2003
13 juil. 2002 à 09:41
d'ou le nom du site :)
PaRaBoL Messages postés 18 Date d'inscription lundi 6 mai 2002 Statut Membre Dernière intervention 6 septembre 2003
2 juil. 2002 à 15:21
Beinsure c'est du scripting mIRC et donc pour les utilisateur de WIndows ^^
Rejoignez-nous