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?

···

--
Posted via http://www.ruby-forum.com/.

(Just to avoid easy questions...)

I am using 'telnet <myserver> 5056'.

I have tried using a different port number.

The ports are not blocked on my server.

···

--
Posted via http://www.ruby-forum.com/.

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

···

--
Posted via http://www.ruby-forum.com/.

On Behalf Of Stephen Ware:
# 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

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

···

On Oct 9, 10:54 pm, Stephen Ware <sgw...@gmail.com> wrote:

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?

What am I missing?

You probably want..
server = TCPServer.new('0.0.0.0', 5056)

This will bind your server to all interfaces.

···

_________________________________________________________________
Help yourself to FREE treats served up daily at the Messenger Café. Stop by today.
http://www.cafemessenger.com/info/info_sweetstuff2.html?ocid=TXT_TAGLM_OctWLtagline

Stephen Ware wrote:

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?

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.

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, 2007, at 11:49 PM, Stephen Ware wrote:

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