22

Pratique

Assurez-vous que le démon du bus magique est bien lancé avec ps -ef|grep mbd. Si nécessaire, démarrez le service avec la commande /usr/local/etc/mbd. Si mbd affiche le message d'erreur Address already in use, détruisez le fichier /tmp/magicbus et relancez le programme.

Entrez /usr/local/etc/mbping -P"ping> " dans un terminal séparé.

$ /usr/local/etc/mbping -P"ping> "
MagicBus Ping 2.0 (1)
(C)2010 frasq.org.
ping>

Entrez help à l'invite.

ping> help
bind [host]
register app_name [sync]
probe app_name [sync]
1 app_name msg
2 app_name msg
send app_name count char
msend app_name count char
dumpsize [n_octets]
pagesize [n_octets]
sleep nsecs
unbind
exit | quit
quit | exit
ping>

Il n'est pas nécessaire de taper le nom complet d'une commande. Si la saisie est ambiguë, un message d'aide est affiché.

ping> s
send app_name count char
sleep nsecs
ping>

Entrez b pour ouvrir une connexion avec le bus.

ping> b
ping>

Si la commande affiche un message d'erreur, entrez /usr/local/etc/mbd pour démarrer le démon du bus magique.

ping> b
No such file or directory
ping>

Dans un autre terminal, entrez /usr/local/etc/mbping -P"pong> ".

MagicBus Ping 2.0 (1)
(C)2010 frasq.org.
pong>

Entrez b pour connecter le processus au bus, puis re pong t pour l'enregistrer avec le nom pong.

pong> b
pong> re pong t
1
pong>

La commande retourne 1, ce qui signifie qu'un seul processus est actuellement enregistré comme pong.

Retournez dans le premier processus mbping et entrez pr pong.

ping> pr pong t
1
ping>

Entrez 1 pong Hello my dear pong! pour envoyer un message one-way au processus pong.

ping> 1 pong Hello, my dear pong!
ping>
[1]SENT

Le bus retourne une confirmation positive. Le message est affiché par pong.

pong> 
[0]<21>
0000 48 65 6c 6c 6f 2c 20 6d 79 20 64 65 61 72 20 70 Hello, my dear p
0016 6f 6e 67 21 00                                  ong!.

Retournez dans le premier processus mbping et entrez 2 pong You could be nicer. pour envoyer un message two-way au processus pong.

ping> 2 pong You could be nicer.
ping>
[2]<20>
0000 59 6f 75 20 63 6f 75 6c            64 20 62 65 20 6e 69 63 You could be nic
0016 65 72 2e 00                                                er..

Le message est affiché par pong et retourné à l'expéditeur. Note : Quand un message two-way est envoyé, le destinataire est censé renvoyer une réponse. mbping retourne en écho ce qu'il a reçu.

Entrez 2 ping I’m sorry. à l'invite du second processus mbping.

pong> 2 ping I'm sorry.
pong>
[2]NOBODY

Le bus retourne une confirmation négative qui signifie qu'aucun processus n'est actuellement enregistré comme ping.

Retournez dans le premier processus mbping et entrez re ping.

ping> re ping
ping>
1

Maintenant réessayez 2 ping I’m sorry. à partir de pong.

pong> 2 ping I'm sorry.
pong>
[3]<11>
0000 49 27 6d 20 73 6f 72 72            79 2e 00         I'm sorry..

Bloquez le processus pong en entrant la commande sleep.

pong> sleep 90

Maintenant envoyez rapidement un message two-way à partir du processus ping.

ping> 2 pong Are you there?
ping>

Le message n'est pas lu par pong qui est endormi. Remarquez que ping n'est pas bloqué en attente d'une réponse parce que les communications dans le bus sont asynchrones. Après un délai d'attente, le bus renvoie automatiquement un messsage d'erreur à ping. Note : Le délai d'attente par défaut est de 60 secondes. Il peut être réglé à partir de la ligne de commande lorsque mbd est lancé.

ping>
[4]TIMEOUT

Quand pong se réveille après 90 secondes, il lit le message et envoie une réponse, mais il est trop tard et le bus tout simplement l'ignore.

Retournez dans le processus ping et entrez se pong 10240 @.

ping> se pong 10240 @
ping>
[5]SENT

Un message one-way comprenant 10240 @ est reçu par le processus pong.

pong>
[0]<10240>
0000 40 40 40 40 40 40 40 40             40 40 40 40 40 40 40 40 @@@@@@@@@@@@@@@@
0016 40 40 40 40 40 40 40 40             40 40 40 40 40 40 40 40 @@@@@@@@@@@@@@@@

La taille de l'affichage par défaut est limitée à 32 octets. Vous pouvez utiliser la commande dumpsize pour la changer.

Entrez se ping 1024000 % à l'invite du processus pong.

pong> se ping 1024000 %
pong>
[4]SENT

Un message comprenant 1024000 % est reçu par le processus ping.

ping>
[0]<1024000>
0000 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 %%%%%%%%%%%%%%%%
0016 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 %%%%%%%%%%%%%%%%

Dans un autre terminal, entrez /usr/local/etc/mbping -P"pong> ".

MagicBus Ping 2.0 (1)
(C)2010 frasq.org.
pong>

Entrez b pour connecter le processus au bus, puis re pong t pour l'enregistrer comme pong.

pong> b
pong> re pong t
2
pong>

Il y a deux processus enregistrés comme pong.

Entrez se pong 1024 $ à l'invite du processus ping. Le message est toujours reçu par le premier pong. Le second pong ne reçoit rien.

Entrez mse pong 1024 # à l'invite du processus ping. Le message est diffusé. Il est reçu par les deux processus pong.

Entrez quit à l'invite du premier processus pong, puis essayez se pong 1024 $ à l'invite du processus ping. Le message est automatiquement redirigé vers le second processus pong.

Quittez ping et pong.

Commentaires

Votre commentaire :
[p] [b] [i] [u] [s] [quote] [pre] [br] [code] [url] [email] strip aide 2000

Entrez un maximum de 2000 caractères.
Améliorez la présentation de votre texte avec les balises de formatage suivantes :
[p]paragraphe[/p], [b]gras[/b], [i]italique[/i], [u]souligné[/u], [s]barré[/s], [quote]citation[/quote], [pre]tel quel[/pre], [br]à la ligne,
[url]http://www.izend.org[/url], [url=http://www.izend.org]site[/url], [email]izend@izend.org[/email], [email=izend@izend.org]izend[/email],
[code]commande[/code], [code=langage]code source en c, java, php, html, javascript, xml, css, sql, bash, dos, make, etc.[/code].