Simple socket server not working?

Any idea why this code…

require ‘socket’
server = TCPServer.new(‘127.0.0.1’, 5056)
socket = server.accept
socket.puts(‘it works’)
socket.flush

doesn’t work on my Unix server? If I run it in the background, I can
connect from the same machine using telnet and it works fine… but I
cannot connect from any remote machines.

What am I missing?

(Just to avoid easy questions…)

I am using ‘telnet 5056’.

I have tried using a different port number.

The ports are not blocked on my server.

Hmm… seem to have fixed my own problem. I just removed the
‘localhost’ parameter from the TCPServer and it works fine.

On Behalf Of Stephen W.:

server = TCPServer.new(‘127.0.0.1’, 5056)

                     ^^^^^^^^^^
                     loopback address

I can connect from the same machine using telnet …

cannot connect from any remote machines.

loopback address is not accessible remotely

try using address of your network card… (eg i tried mine at 10.2.10.123
and it works…)

kind regards -botp

On Oct 9, 2007, at 11:49 PM, Stephen W. wrote:

Hmm… seem to have fixed my own problem. I just removed the
‘localhost’ parameter from the TCPServer and it works fine.

As a quick summary of the problem, 127.0.0.1 is ONLY accessible from
your local machine. :slight_smile:

If you try it with your network IP address, make sure you don’t have
any firewalls blocking it.

HTH
Ari
--------------------------------------------|
If you’re not living on the edge,
then you’re just wasting space.

On Oct 9, 10:54 pm, Stephen W. [email protected] wrote:

cannot connect from any remote machines.

What am I missing?

A firewall perhaps? Does it work locally but not from a remote
machine? The code worked fine for me totally locally, so I think the
problem is network-related.
-Mat

What am I missing?

You probably want…
server = TCPServer.new(‘0.0.0.0’, 5056)

This will bind your server to all interfaces.

Stephen W. wrote:

cannot connect from any remote machines.

What am I missing?

Using the machine’s network address. Something like
server = TCPServer.new( ‘111.222.111.2’ , 5056)
should do the trick.

127.0.0.1 is the loopback address, which (AFAIK) means that socket
won’t get anywhere near the outside network, it will all
be handled internally. Hence you cannot connect to it from outside your
unix server.

Martin.