【发布时间】:2012-04-18 11:02:56
【问题描述】:
做数据时,addr = @socket.recvfrom(1500),addr数组包含Array: ["AF_INET", port, "resolved-name-or-ip", "ip"]
如何禁用 UDPSocket 上的解析? ruby UDPSocket 的文档有点差。
【问题讨论】:
标签: ruby sockets ruby-1.8.7
做数据时,addr = @socket.recvfrom(1500),addr数组包含Array: ["AF_INET", port, "resolved-name-or-ip", "ip"]
如何禁用 UDPSocket 上的解析? ruby UDPSocket 的文档有点差。
【问题讨论】:
标签: ruby sockets ruby-1.8.7
在the documentation中,可以看到connect方法中调用了rsock_addrinfo方法。
此方法调用getaddrinfo。
所以我看不到解决方法,您必须调用另一个连接方法。
也许您可以添加一些代码行以便更好地理解?恐怕你不能。
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
【讨论】:
好的。我找到了。
我将在此处记录此内容,以便有人幸运地找到它。
要禁用自动查找,请将其放入您的代码中:
BasicSocket.do_not_reverse_lookup = true
在创建套接字之前。它成功了。
【讨论】: