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