J'essaie de configurer un client et un serveur UDP simple à l'aide de Ruby. Le code ressemble à ceci:Échec du test serveur/client Ruby UDP
require 'socket.so'
class UDPServer
def initialize(port)
@port = port
end
def start
@socket = UDPSocket.new
@socket.bind(nil, @port) # is nil OK here?
while true
packet = @socket.recvfrom(1024)
puts packet
end
end
end
server = UDPServer.new(4321)
server.start
C'est le client:
require 'socket.so'
class UDPClient
def initialize(host, port)
@host = host
@port = port
end
def start
@socket = UDPSocket.open
@socket.connect(@host, @port)
while true
@socket.send("otiro", 0, @host, @port)
sleep 2
end
end
end
client = UDPClient.new("10.10.129.139", 4321) # 10.10.129.139 is the IP of UDP server
client.start
Maintenant, j'ai deux machines VirtualBox sous Linux. Ils sont dans le même réseau, ils peuvent se pinguer les uns aux autres.
Mais quand je lance le serveur UDP sur la machine A, et puis essayez d'exécuter le client UDP sur la machine BI obtenir l'erreur suivante:
client.rb:13:in `send': Connection refused - sendto(2) (Errno::ECONNREFUSED)
Je pense que l'erreur est dans la méthode de liaison sur la serveur. Je ne sais pas quelle adresse je devrais préciser ici. J'ai lu quelque part que vous devriez utiliser l'adresse de votre interface LAN/WAN, mais je ne sais pas comment obtenir cette adresse.
Quelqu'un peut-il me aider avec celui-ci?
En utilisant '' ou Socket INADDR_ANY que l'adresse IP pour la méthode de liaison résout le problème. Merci! – StackedCrooked