在做數據,ADDR = @ socket.recvfrom(1500),該地址數組包含陣列:[ 「AF_INET」,端口 「解析名稱或IP」, 「IP」]如何禁用ruby UDPSocket解析recvfrom上的IP地址?
我怎樣才能禁用解決UDPSocket? ruby UDPSocket的文檔有點窮。
在做數據,ADDR = @ socket.recvfrom(1500),該地址數組包含陣列:[ 「AF_INET」,端口 「解析名稱或IP」, 「IP」]如何禁用ruby UDPSocket解析recvfrom上的IP地址?
我怎樣才能禁用解決UDPSocket? ruby UDPSocket的文檔有點窮。
確定。我找到了。
我會在這裏記錄這個,所以有人可能會很幸運並找到它。在創建socket之前
BasicSocket.do_not_reverse_lookup = true
:
要禁用自動查找,把這個在你的代碼。它有訣竅。
在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
我的不好,我忘了把紅寶石版本:(,我使用紅寶石1.8.7 – cmouse 2012-04-18 11:53:04