Ruby and C network interaction


#1

Hi,

I’m working on a small client/server application in my spare time,
using C and win32 for the client and Ruby for the server. I’m having
an interaction issue and was wondering if anyone could help. I’m not
an expert in Ruby or networking :\

Anyway, on the client side I set up a socket and connect to the server,
then send a username with:

send (socket, myMessage, sizeof (myMessage))

Which works fine. The Ruby server receives and prints it with:

username = session.recv(20).strip
puts “Username: ‘#{username}’”

(session is an instance of TCPServer)

A password is sent the same way. My trouble occurs when I try to send
data back to the client from the server.

The client tries to receive with:

recv (socket, sockMsg, sizeof(sockMsg), 0);

And the server sends with:

sent = session.send(“success”, 0)
puts “#{sent} characters sent”

The server outputs “7 characters sent”, but I don’t receive anything on
the client side. I output the contents of sockMsg, and it’s empty.

Server code is here (It’s not much, just something simple):
http://www.craighammell.com/code/server.rb

Any help would be appreciated.

Thanks.


#2

On Wed, 30 Nov 2005, cilphex wrote:

send (socket, myMessage, sizeof (myMessage))

the client side. I output the contents of sockMsg, and it’s empty.

Server code is here (It’s not much, just something simple):
http://www.craighammell.com/code/server.rb

Any help would be appreciated.

buffering.

try

socket.sync = true

cheers.

-a


#3

Just tried this, it didn’t help :\

Thanks


#4

cilphex wrote:

Just tried this, it didn’t help :\

Thanks

I tried your server against a ruby client and it worked. Ruby 1.8.2,
WinXP.


#5

Ah, I had an error in my C code! Sorry for wasting your time everyone.
I thought it was good so I figured it had to be the Ruby.

Thanks for your help, though, and validating that the server worked.

Craig