0

我已经创建了一个 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 数据库中。

4

2 回答 2

2

你是做服务器还是客户端?

你用的是nc,所以我猜你是在做客户端。

服务器已绑定

客户端连接:

c = UDPSocket.new

c.connect("127.0.0.1", 1111)

“地址不可用”通常在使用端口时。

或者您可以先 ping 地址以检查该地址是否可以到达

于 2013-05-31T02:04:37.073 回答
2

我通过运行得到了同样的错误:

rails s -b 10.0.0.61

事实证明,我的本地 IP 不是 10.0.0.61,这是导致错误的原因。

于 2016-08-08T14:12:35.803 回答