[Ror-es] Duda conceptual sobre distintos procesos Ruby
Iñaki Baz Castillo
ibc at aliax.net
Wed Oct 31 22:53:00 GMT 2007
El Lunes, 29 de Octubre de 2007, Silvio Quadri escribió:
> No está del todo claro lo que querés, pero ...
> El bind, como bien decís, sólo puede estar en el servidor. Cada puerto
> puede ser escuchado sólo una vez al mismo tiempo. Si intentás volver a
> hacer "listen" sobre el mismo puerto por otro proceso, da un error. Eso no
> implica que no puedas hacer "connect" hacia otro servidor desde ese mismo
> Thread con el mismo número de puerto.
> El cliente no hace bind, hace "connect" a un puerto. Si el cliente tiene
> que "escuchar", debe convertirse en un "servidor" y hacer "listen" en el
> puerto con otro socket.
>
> # Este seria el servidor ...
> require 'socket'
> include Socket::Constants
> socket = Socket.new( AF_INET, SOCK_STREAM, 0 )
> sockaddr = Socket.pack_sockaddr_in( 2300, 'localhost' )
> socket.bind( sockaddr )
> socket.listen( 5 )
> client, client_sockaddr = socket.accept
> puts "The client said, '#{client.readline.chomp}'"
> client.puts "Hello from script one!"
> socket.close
>
> # Este seria el cliente.
> require 'socket'
> include Socket::Constants
> socket = Socket.new( AF_INET, SOCK_DGRAM, 0 )
> sockaddr = Socket.pack_sockaddr_in( 2300, 'elhost' )
> socket.connect( sockaddr )
Gracias por toda la info. Estoy tratando de documentarme más sobre sockets y
tal. Replanteré mejor la pregunta cuando lo tenga un poco más claro.
Muchas gracias.
--
Iñaki Baz Castillo
More information about the Ror-es
mailing list