2012-04-18 57 views

回答

0

确定。我找到了。

我会在这里记录这个,所以有人可能会很幸运并找到它。在创建socket之前

BasicSocket.do_not_reverse_lookup = true 

要禁用自动查找,把这个在你的代码。它有诀窍。

1

the documentation,你可以在connect方法称为rsock_addrinfo方法见。

此方法调用getaddrinfo

所以我没有看到解决办法,你必须调用另一个连接方法。

也许你可以添加一些codelines更好的理解?恐怕你不能。

static VALUE 

udp_connect(sock, host, port) 
VALUE sock, host, port; 
{ 
rb_io_t *fptr; 
struct udp_arg arg; 
VALUE ret; 

rb_secure(3); 

arg.res = sock_addrinfo(host, port, SOCK_DGRAM, 0); 

GetOpenFile(sock, fptr); 
arg.fd = fileno(fptr->f); 
ret = rb_ensure(udp_connect_internal, (VALUE)&arg, 
       RUBY_METHOD_FUNC(freeaddrinfo), (VALUE)arg.res); 
if (!ret) rb_sys_fail("connect(2)"); 
return INT2FIX(0); 
} 

来源:http://ruby-doc.org/stdlib-1.8.7/libdoc/socket/rdoc/UDPSocket.html

+0

我的不好,我忘了把红宝石版本:(,我使用红宝石1.8.7 – cmouse 2012-04-18 11:53:04