TUTORIAUX SOCK MIRC

Signaler
Messages postés
18
Date d'inscription
lundi 6 mai 2002
Statut
Membre
Dernière intervention
6 septembre 2003
-
Messages postés
199
Date d'inscription
lundi 19 mai 2003
Statut
Membre
Dernière intervention
7 avril 2005
-
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

Messages postés
199
Date d'inscription
lundi 19 mai 2003
Statut
Membre
Dernière intervention
7 avril 2005

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
Messages postés
229
Date d'inscription
dimanche 3 juin 2001
Statut
Membre
Dernière intervention
5 octobre 2003

Dommage, il manque la description des erreurs sur les sockets. Justement ce qu'il me fallait :(
Messages postés
117
Date d'inscription
lundi 17 mars 2003
Statut
Membre
Dernière intervention
8 décembre 2003

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!
Messages postés
18
Date d'inscription
lundi 6 mai 2002
Statut
Membre
Dernière intervention
6 septembre 2003

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 ^^
Afficher les 7 commentaires