2017-10-28 174 views
0

使用Ruby UDPSocket多态与IO对象的最佳做法是什么?我正在写一个序列化类我的图书馆,并希望把网络套接字同为FileStringIO对象,UDPSocket没有从IO继承,但是当我尝试write_nonblock,插座引发Errno::EDESTADDRREQ我该如何在IO中多态地使用Ruby UDPSocket?

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>' 

回答

0

插座必须connect“通过send之前,你可以write将其D到A默认地址不指定目标:

2.4.1 :5 > sock.connect('127.0.0.1', 12345) 
=> 0 
2.4.1 :6 > sock.write_nonblock 'nonblock' 
=> 8 
相关问题