我已经创建了一个qt程序,可以侦听我服务器上的特定端口。它工作正常。现在我想创建一个简单的ruby程序来做同样的事情。现在我只有一个使用netcat的简单测试服务器,它建立一个网络套接字并接受UDP数据(顺便说一下,这是Ubuntu服务器):
$ sudo nc -l 1720
现在我只是想在Ruby上监听端口:
# network.rb
require 'socket'
socket = UDPSocket.new
socket.bind('64.xxx.xx.xxx', 1720)
这马上提出了这个例外:
network.rb:4:in `bind': Cannot assign requested address - bind(2) (Errno::EADDRNOTAVAIL)
为什么地址不可用?所有这一切都是一个netcat套接字。我的目标是将UDP数据从GPRS设备传入该端口,然后我将让ruby坐在我的ubuntu服务器上侦听该数据,然后对其进行解码,并将其存储到postgresql数据库中。
答案 0 :(得分:2)
您正在制作服务器或客户端?
你使用过nc,所以我猜你是在做客户。服务器绑定
客户端是连接:
c = UDPSocket.new
c.connect("127.0.0.1", 1111)
“地址不可用”通常在使用端口时。
或者您可以ping地址fisrt以检查是否可以到达地址
答案 1 :(得分:2)
我通过运行来获得相同的错误:
rails s -b 10.0.0.61
事实证明我的本地IP不是10.0.0.61,这导致了错误。