データを実行するとき、addr = @socket.recvfrom(1500)、addr 配列には配列が含まれます: ["AF_INET", port, "resolved-name-or-ip", "ip"]
UDPSocket での解決を無効にするにはどうすればよいですか? ruby UDPSocket のドキュメントは少し貧弱です。
データを実行するとき、addr = @socket.recvfrom(1500)、addr 配列には配列が含まれます: ["AF_INET", port, "resolved-name-or-ip", "ip"]
UDPSocket での解決を無効にするにはどうすればよいですか? ruby UDPSocket のドキュメントは少し貧弱です。
ドキュメントでは、メソッドで呼び出された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
Ok。見つけた。
誰かが幸運に恵まれて見つけられるように、これをここに記録します。
自動ルックアップを無効にするには、コードに次のように記述します。
BasicSocket.do_not_reverse_lookup = true
ソケットを作成する前に。それはトリックを行います。