Bienvenidos a un lugar donde la programación, los vídeos, las divagaciones y las subnormalidad se combinan para demostrar que el caos puede ser bello.
Serabe Reloaded
Conecto ergo sum. Non conecto ergo urgueo.
"The most important thing in the programming language is the name. A language will not succeed without a good name. I have recently invented a very good name and now I am looking for a suitable language."
Donald E. Knuth
Comparativa I: Cliente en Ruby
Pasamos de Java a Ruby, un lenguaje que a pesar de ser aproximadamente tan viejo como el primero, aún sigue siendo desconocido por algunos europeos. Hace poco ha tenido un auge en el viejo continente gracias, en gran medida, a RubyOnRails.
Puesto que vamos a necesitar realizar conexiones, lo primero es:
require 'socket'
Acto seguido, se define el método mensaje_aleatorio:
def mensaje_aleatorio
msg = ["Hola, Mundo","Melón.","Larga y próspera vida.","La Quinta Raza.","So long, and thanks for all the fish.","Spain is different.", "Com va això?","Bona tarda."]
msg[rand(msg.length)]
end
Y ahora llega la magia Ruby. Para crear diez hilos diferentes simplemente se utiliza el método times y la clase Thread:
num_hilos = 10
num_hilos.times do |i|
Thread.start do
En él, se crea un bucle infinito en el que se conecta al servidor (simplemente con TCPSocket.new(servidor,puerto) ), envía el mensaje y espera la respuesta, comprobando que es el texto enviado.
while(true)
puts “Abriendo socket #{j}”
begin
socket = TCPSocket.new(”localhost”,7777)
puts “Abierto socket #{j}”
s = mensaje_aleatorio
socket.puts s
puts “Enviado \”#{s}\” en #{j}”
puts (s == (s1=socket.gets().strip())) ? “Correcto” : “Falló\nEsperado: #{s}\nDevuelto: #{s1}”
rescue Exception => bang
puts bang.to_s
ensure
socket.close unless socket.nil?
end
end
Ya, por último y fuera del método times, se crea un bucle infinito para evitar que termine el script sin hacer lo que se le pide.
Aquí el código completo.
Escribe un comentario
"En un beso, sabrás todo lo que he callado."
Neruda