类 SOCKSSocket

SOCKS 是一种互联网协议,它通过代理服务器在客户端和服务器之间路由数据包。SOCKS5(如果支持)还提供身份验证,因此只有授权用户才能访问服务器。

公共类方法

new(host, port) → socket 点击切换源代码

通过 SOCKS 服务器打开到 host 的 SOCKS 连接。

SOCKS 服务器配置因实现而异

使用 Dante libsocks/libsocksd 实现时,它被配置为 SOCKS_SERVER 环境变量。

参见:manpages.debian.org/testing/dante-client/socksify.1.en.html 以获取完整的环境变量支持。

static VALUE
socks_init(VALUE sock, VALUE host, VALUE port)
{
    static int init = 0;

    if (init == 0) {
        SOCKSinit("ruby");
        init = 1;
    }

    return rsock_init_inetsock(sock, host, port, Qnil, Qnil, INET_SOCKS, Qnil, Qnil);
}
new(host, serv) 点击切换源代码
# File lib/resolv-replace.rb, line 73
def initialize(host, serv)
  original_resolv_initialize(IPSocket.getaddress(host), port)
end

公共实例方法

close() 点击切换源代码

关闭 SOCKS 连接。

static VALUE
socks_s_close(VALUE sock)
{
    rb_io_t *fptr;

    GetOpenFile(sock, fptr);
    shutdown(fptr->fd, 2);
    return rb_io_close(sock);
}