See documentation. #gets tries to read a line (i.e. until it sees a line terminator). Also, I believe recv also works with UDP while I am not sure about gets.
Cheers
robert
···
On 17.10.2008 09:40, Jamal Soueidan wrote:
Hello there,
I wonder whats the difference between these methods ( gets and recv )
loop {
data = current_client.recv(100)
puts data
}
When I use "gets" instead of recv my socket connection stops and never
print out the message?
See documentation. #gets tries to read a line (i.e. until it sees a line
terminator). Also, I believe recv also works with UDP while I am not
sure about gets.
Cheers
robert
Hmm, I looked before at documentation and they wrote...
"A separator of nil reads the entire contents..."
so I did
@data = gets()
But my code stops after that and wouldn't continue? even though
gets(nil) is the same, I also tried that, didn't work.
--
Posted via http://www.ruby-forum.com/\.
See documentation. #gets tries to read a line (i.e. until it sees a line
terminator). Also, I believe recv also works with UDP while I am not
sure about gets.
Cheers
robert
Hmm, I looked before at documentation and they wrote...
Note, that instead of gets(nil) you can as well use read.
But my code stops after that and wouldn't continue? even though gets(nil) is the same, I also tried that, didn't work.
You need to understand blocking IO: the IO operation blocks until everything is read. In case of a socket, it will only return if there was an error or the other party closed the socket. So, you need to define the protocol in a way that you either know beforehand how much you need to read (then you can use read(length) or recv(length)) or you need a separator that you can use to recognize message end (then you can use gets(separator)).