JohnMerlino
JohnMerlino

Reputation: 3928

ruby cannot assign requested address

I had already created a qt program that listens on a specific port on my server. And it works fine. Now I want to create a simple ruby program to do the same. Right now I just have a simple test server using netcat which establishes a network socket and accepts UDP data (this is Ubuntu server by the way):

$ sudo nc -l 1720

Now I am just trying to listen on the port in Ruby:

# network.rb

require 'socket'

socket = UDPSocket.new
socket.bind('64.xxx.xx.xxx', 1720)

This right away raises this exception:

network.rb:4:in `bind': Cannot assign requested address - bind(2) (Errno::EADDRNOTAVAIL)

WHy is it saying the address is not available? All that is there is a netcat socket. The goal is that I will have UDP data coming in from GPRS devices to that port, and then I will have ruby sitting on my ubuntu server listening for that data, then decoding it, and storing it into a postgresql database.

Upvotes: 1

Views: 5014

Answers (2)

I was getting the same error by running:

rails s -b 10.0.0.61

It turns out that my local IP wasn't 10.0.0.61 and this was causing the error.

Upvotes: 2

Chance Door
Chance Door

Reputation: 231

You are making a server or client?

you used nc, so i guess you are making client.

server is bind

client is connect:

c = UDPSocket.new

c.connect("127.0.0.1", 1111)

"address is not available" usually as the port is used.

or you can ping the address fisrt to check if the address can be reached

Upvotes: 3

Related Questions