Bueno muy basico. Ulitmamente e estado tratando de interactuar con este lenguaje y bueno atratar algo basico que son los sockets!

Para poder usar sockets en ruby necesitamos:

Código: Seleccionar todo

require 'socket'
Nos responde con un True! Por que? Nose deberia de respondel con nil supongo que es por que encontro el modulo y por eso tira el true! xD

Bueno ya pidiendo socket podemos trabajar con ello y vamos a hacer el server primero:

Server:

Código: Seleccionar todo

serv = TCPSocket.new  1234
tambien

Código: Seleccionar todo

serv = TCPSocket.new(1234)
otra forma tambien es

Código: Seleccionar todo

serv = TCPSocket.open(1234)
Nos quedaremos con la primera!

Código: Seleccionar todo

serv.listen(1)
Donde listen nos sirve para escuchar un maximo de conexion en este caso seria una.

Y de aqui ya podemos hacer muchas cosas al gusto. Algo simple que nose sirve para el ejemplo seria mandar un mensaje a todo aquel que se conecte y cerrar la conexion.

Código: Seleccionar todo

loop do
  client = serv.accept 
  client.puts "Wellcome to server"
  client.close
end
con serv.accept aceptamos la conexion y con puts mandamos al cliente el mensaje y con close cerramos el socket

Y nuestro codigo final del server quedaria asi:

Código: Seleccionar todo

require 'socket'

serv = TCPSocket.new 1234
serv.listen(1)
loop do
  client = serv.accept 
  client.puts "Wellcome to server"
  client.close
end
Ahora vamos con el cliente:

Cliente:

Código: Seleccionar todo

require 'socket'
Pedimos socket; recibimos true

Código: Seleccionar todo

client = TCPSocket.new 'localhost' 1234
Tambien puede ser

Código: Seleccionar todo

client = TCPSocket.new('localhost', 1234)
O

Código: Seleccionar todo

client = TCPSocket.open('localhost', 1234)
Donde localhost es el host al que nos vamos a conectar se puede especificar ip o un url y el puerto que en este caso es 1234

Ahora de aqui tambien podemos hacer muchas cosas, para el ejemplo mandaremos se imprime entra en un while y se imprime el mensaje terminando esto se cierra la conexion

Código: Seleccionar todo

while mensaje = serv.gets
    puts mensaje
end
client.close
Y el codigo final del cliente seria este

Código: Seleccionar todo

require 'socket'
client = TCPSocket.new 'localhost' 1234
while mensaje = serv.gets
    puts mensaje
end
client.close
Tambien existen otras funciones utiles como

Código: Seleccionar todo

Socket.getaddrinfo(host, puerto)
Para obtener informacion del address

Código: Seleccionar todo

select [sock], nil, nil, timeout
Para establecer un timeout a la conexion

Y muchas otras

[Enlace externo eliminado para invitados]
1337 & culture!
Responder

Volver a “Fuentes”