On a vu comment créer un serveur en Ruby, on a vu comment créer un client en Ruby, alors pourquoi ne pas faire communiquer les deux ? Rien de plus simple.
Appel local/local
Pour lancer un serveur et un client simultanément sur le même ordi, on va utiliser :
- Scite (l’éditeur de texte livré avec Ruby et qui permet de lancer le programme directement avec F5, sans passer par la console DOS) pour le serveur
- la console DOS pour ouvrir le fichier client
Serveur
Contenu identique au post d’avant-hier. On lance le serveur avec Scite et on le laisse tourner.
require "socket" monserveur = TCPserver.new('localhost', 12345) sockaddr = monserveur.addr puts "Le serveur tourne sur #{sockaddr.join(':')}" while true Thread.start(monserveur.accept) do |sock| puts("#{sock} connecté à #{Time.now}") while sock.gets sock.write($_) puts "L'utilisateur a tapé: #{$_}" end puts("#{sock} déconnecté à #{Time.now}") s.close end end
Client
On crée un fichier client.rb avec les mêmes infos que le serveur (localhost,12345).
require "socket" print("Connexion...") clientsock = TCPsocket.open("localhost", 12345) print(" terminée\n") while (gets()) clientsock.write($_) puts(clientsock.gets) end clientsock.close
On ouvre la console DOS, on va dans le dossier où se trouve le fichier “client.rb” et on l’ouvre en tapant ruby client.rb. Pourquoi je passe par DOS ? C’est pour avoir une invite de commande lorsque Ruby me le demande avec clientsock.gets.
On ouvre donc le fichier et ça affiche Connexion... terminée. Puis j’ai mon invite de commande, et je peux rentrer des infos. Je mets deux phrases, puis je ferme la console client. Ensuite, je retourne à mon serveur (qui tourne depuis tout ce temps) et je le ferme. Je vois dans la console les infos récupérées :
Le serveur tourne sur AF_INET:12345:localhost:127.0.0.1 #<TCPSocket:0x2b91ca0> connecté à Sun Apr 26 22:35:20 +0200 2009 L'utilisateur a tapé: je suis sous DOS L'utilisateur a tapé: et je vous parle
J’ai bien communiqué avec mon serveur Ruby en passant par un client en Ruby. Ce n’était pas à distance, mais ça ne serait pas compliqué de le faire!
Flux RSS
Hello Jérémy ! Juste 2 remarques dont une tardive :
1) j’ai l’impression que ta syndication est tombée (le dernier billet reçu par RSS est du 24 “Agir pour l’environnement”).
2) je voulais revenir sur une syntaxe, le %Q{..} que tu semblais avoir mal saisie : en fait elle permet d’insérer les guillements (quotes) sans trop en faire au niveau du clavier, par exemple :
%Q{Vincent dit “Salut Jérémy ! tes RSS déconnent ou c’est chez moi ?”}
=> “Vincent dit \”Salut Jérému ! tes RSS déconnent ou c’est moi ? \”"
juste pour la petit précision, quoi…
Hello
1) Pour le flux RSS, je m’abonne toujours à mon propre flux pour voir si il fonctionne correctement, et c’est le cas. T’utilises Google Reader ? Netvibes ? Autre chose ?
2) Ah oui je vois, merci pour la précision.
Bon, je me doutais un peu du coup, j’utilise Thunderbird derrière un proxy ici, chez moi je peux surfer sans problème.. ça doit venir de moi alors, les autres flux fonctionnant je me suis posé la question
Merci en tous cas !
vincent