2017-10-28 6 views
0

Was ist die beste Praxis für die Verwendung eines Ruby UDPSocket polymorph mit einem IO Objekt? Ich bin eine Serialisierung Klasse für meine Bibliothek zu schreiben und will behandeln, Netzwerk-Sockets das gleiches wie ein File oder ein StringIO Objekt und UDPSocket erbt von IO, aber wenn ich zu write_nonblock versuchen, der Sockel hebt Errno::EDESTADDRREQ:Wie kann ich eine Ruby UDPSocket polymorph mit IO verwenden?

2.4.1 :1 > require 'socket' 
=> true 
2.4.1 :2 > sock = UDPSocket.new 
=> #<UDPSocket:fd 4> 
2.4.1 :3 > sock.bind('127.0.0.1', 0) 
=> 0 
2.4.1 :4 > sock.write_nonblock 'nonblock' 
Errno::EDESTADDRREQ: Destination address required 
     from <internal:prelude>:136:in `__write_nonblock' 
     from <internal:prelude>:136:in `write_nonblock' 
     from (irb):4 
     from /usr/local/rvm/rubies/ruby-2.4.1/bin/irb:11:in `<main>' 

Antwort

0

muss der Sockel sein connect ‚d auf eine Standardadresse, bevor Sie write es ohne ein Ziel durch send Angabe:

2.4.1 :5 > sock.connect('127.0.0.1', 12345) 
=> 0 
2.4.1 :6 > sock.write_nonblock 'nonblock' 
=> 8 
Verwandte Themen