2010-09-29 2 views
0

J'ai un programme Ruby très simple qui fait office de "serveur d'écho". Lorsque vous vous connectez via telnet tout texte que vous tapez est renvoyé en écho. Cette partie fonctionne. Si j'ajoute une instruction 'putc' pour imprimer aussi chaque caractère reçu sur la console exécutant le programme, seul le premier caractère affiché est imprimé. Après cela, il continue à faire écho au client telnet, mais il n'y a rien d'imprimé sur la console.Comment afficher les caractères reçus via une socket?

Ce qui suit est un petit programme dépouillé qui présente le problème.

Je suis très nouveau à Ruby et j'ai probablement fait une erreur de débutant typique. Qu'ai-je fait de mal?

require 'socket' 

puts "Simple Echo Server V1.0" 
server = TCPServer.new('127.0.0.1', '2150') 
cbuf = "" 

while socket = server.accept 
    cbuf = socket.readchar 
    socket.putc cbuf 
    putc cbuf 
end 

Répondre

1

Le problème est que votre code ne fonctionne que la boucle while une fois pour chaque fois que quelqu'un se connecte (tcpserver # acceptent accepte une connexion). Essayez quelque chose de plus:

require 'socket' 

puts "Simple Echo Server V1.0" 
server = TCPServer.new('127.0.0.1', '2150') 

socket = server.accept 

while line = socket.readline 
    socket.puts line 
    puts line 
end 
+0

Merci. Je savais que ce serait quelque chose d'évident que j'avais oublié. – Timm

Questions connexes