[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

ruby socket programming

monarailguy42

5/23/2007 3:50:00 PM

Hello I am trying to write a simple ruby socket program. I am trying
to communicate to a device that once I establish a TCPSocket
connection I can pass it sql commands and it will return me data.
Here is what I have been trying.

require 'socket'
begin
t = TCPSocket.new('192.168.0.71', 8080)
rescue
puts "error: #{$!}"
else
# ... do something with the socket
t.write("select read_count from tag_id")
answer = t.gets
puts answer
# and terminate the connection when we're done
t.close
end

My answer contains nothing, so I know I must be doing something
wrong. The device I am communication to is a ThingMagic RFID M4 and
the manufacturer assures me that once a TCP Socket connection is
established that passing queries as above will give back data. I know
that the device is working from other tests. Any help would be
appreciated.
Thanks
Larry

3 Answers

Luis Parravicini

5/23/2007 4:11:00 PM

0

On 5/23/07, monarailguy42 <Larry.Erickson@gmail.com> wrote:
> # ... do something with the socket
> t.write("select read_count from tag_id")
> answer = t.gets

How the device knows the data you wrote is the complete query?
Shouldn't you send some mark (newline, ';' or something like that) to
let the device knows where the query ends?


--
Luis Parravicini
http://ktulu.co...

Rolando Abarca

5/23/2007 8:06:00 PM

0

On May 23, 2007, at 11:54 AM, monarailguy42 wrote:

> Hello I am trying to write a simple ruby socket program. I am trying
> to communicate to a device that once I establish a TCPSocket
> connection I can pass it sql commands and it will return me data.
> Here is what I have been trying.
>
> require 'socket'
> begin
> t = TCPSocket.new('192.168.0.71', 8080)
> rescue
> puts "error: #{$!}"
> else
> # ... do something with the socket
> t.write("select read_count from tag_id")

did you try with a t.flush or maybe a t.puts("...")?...

--
Rolando Abarca
rabarca@scio.cl
SCIO Ltda. Desarrollo de Software



bino_oetomo

5/24/2007 3:05:00 AM

0

Dear All

----- Original Message -----
From: "Luis Parravicini" <lparravi@gmail.com>
To: "ruby-talk ML" <ruby-talk@ruby-lang.org>
Sent: Wednesday, May 23, 2007 11:10 PM
Subject: Re: ruby socket programming


> On 5/23/07, monarailguy42 <Larry.Erickson@gmail.com> wrote:
> > # ... do something with the socket
> > t.write("select read_count from tag_id")
> > answer = t.gets
>
> How the device knows the data you wrote is the complete query?
> Shouldn't you send some mark (newline, ';' or something like that) to
> let the device knows where the query ends?
>


I Tried with socket server script from

and the client is :
---Start----
#!/usr/local/bin/ruby
require 'socket'
aa=0
loop do
aa = aa+1
sock = TCPSocket.new('127.0.0.1', 20000)
sendit = "We send #{aa}"
sock.send(sendit,0)
str = sock.recv(100)
puts 'we received #{str}'
sock.close
sleep (1)
end
---Stop----

Work fine for me

But .. i think it'll be better if the device can act as client, and always
send all data in comma delimeted , so the server (we , user) can just wait
for data and parse received data easily.
Just like what Barcode reader do with keyboard port

Sincerely
-bino-