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
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?
···
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
did you try with a t.flush or maybe a t.puts("...")?...
···
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")
--
Rolando Abarca
rabarca@scio.cl
SCIO Ltda. Desarrollo de Software
----- 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