# class SOCKSSocket

SOCKS is an Internet protocol that routes packets between a client and a server through a proxy server. SOCKS5, if supported, additionally provides authentication so only authorized users may access a server.

### Public Class Methods

new(host, serv) click to toggle source

    # File lib/resolv-replace.rb, line 73
    def initialize(host, serv)
      original_resolv_initialize(IPSocket.getaddress(host), port)
    end

new(host, port) → socket click to toggle source

Opens a SOCKS connection to `host` via the SOCKS server.

The SOCKS server configuration varies by implementation

When using the Dante libsocks/libsocksd implementation it is configured as SOCKS_SERVER env var.

See: manpages.debian.org/testing/dante-client/socksify.1.en.html for full env variable support.

    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);
    }

### Public Instance Methods

close() click to toggle source

Closes the SOCKS connection.

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

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