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?
Why?
Thanks…
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?
Why?
Thanks…
On 17.10.2008 09:40, Jamal S. wrote:
print out the message?
Why?
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
Robert K. wrote:
On 17.10.2008 09:40, Jamal S. wrote:
print out the message?
Why?
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.
Jamal S. wrote:
so I did
@data = gets()
in analogy to your recv-Example it should look like:
loop {
   data = current_client.gets
   puts data
}
Andi
unknown wrote:
Jamal S. wrote:
so I did
@data = gets()
in analogy to your recv-Example it should look like:
loop {
   data = current_client.gets
   puts data
}
Andi
This doesn’t work
I also tried
while(data = gets)
p data
end
The code doesn’t continue
On 17.10.2008 12:09, Jamal S. wrote:
robert
Hmm, I looked before at documentation and they wrote…
“A separator of nil reads the entire contents…”
so I did
@data = gets()
Look again. class IO - RDoc Documentation
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)).
Kind regards
robert
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.
Sponsor our Newsletter | Privacy Policy | Terms of Service | Remote Ruby Jobs