Class: SOCKSSocket
| Relationships & Source Files | |
| Super Chains via Extension / Inclusion / Inheritance | |
| Class Chain: | |
| Instance Chain: | |
| Inherits: | TCPSocket 
 | 
| Defined in: | ext/socket/sockssocket.c | 
Overview
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.
Class Attribute Summary
::BasicSocket - Inherited
| .do_not_reverse_lookup | Gets the global do_not_reverse_lookup flag. | 
| .do_not_reverse_lookup= | Sets the global do_not_reverse_lookup flag. | 
Class Method Summary
- 
    
      .new(host, port)  ⇒ socket 
    
    constructor
    Opens a SOCKS connection to hostvia the SOCKS server.
::TCPSocket - Inherited
| .gethostbyname | Use Addrinfo.getaddrinfo instead. | 
| .new | Opens a TCP connection to  | 
::IPSocket - Inherited
| .getaddress | Lookups the IP address of host. | 
::BasicSocket - Inherited
| .for_fd | Returns a socket object which contains the file descriptor, fd. | 
Instance Attribute Summary
::BasicSocket - Inherited
| #do_not_reverse_lookup | Gets the do_not_reverse_lookup flag of basicsocket. | 
| #do_not_reverse_lookup= | Sets the do_not_reverse_lookup flag of basicsocket. | 
Instance Method Summary
- 
    
      #close  
    
    Closes the SOCKS connection. 
::IPSocket - Inherited
| #addr | Returns the local address as an array which contains address_family, port, hostname and numeric_address. | 
| #inspect | Return a string describing this  | 
| #peeraddr | Returns the remote address as an array which contains address_family, port, hostname and numeric_address. | 
| #recvfrom | Receives a message and return the message as a string and an address which the message come from. | 
::BasicSocket - Inherited
| #close_read | Disallows further read using shutdown system call. | 
| #close_write | Disallows further write using shutdown system call. | 
| #connect_address | Returns an address of the socket suitable for connect in the local machine. | 
| #getpeereid | Returns the user and group on the peer of the UNIX socket. | 
| #getpeername | Returns the remote address of the socket as a sockaddr string. | 
| #getsockname | Returns the local address of the socket as a sockaddr string. | 
| #getsockopt | Gets a socket option. | 
| #local_address | Returns an  | 
| #recv | Receives a message. | 
| #recv_nonblock | Receives up to maxlen bytes from  | 
| #recvmsg | recvmsg receives a message using recvmsg(2) system call in blocking manner. | 
| #recvmsg_nonblock | recvmsg receives a message using recvmsg(2) system call in non-blocking manner. | 
| #remote_address | Returns an  | 
| #send | send mesg via basicsocket. | 
| #sendmsg | sendmsg sends a message using sendmsg(2) system call in blocking manner. | 
| #sendmsg_nonblock | sendmsg_nonblock sends a message using sendmsg(2) system call in non-blocking manner. | 
| #setsockopt | Sets a socket option. | 
| #shutdown | Calls shutdown(2) system call. | 
| #__recvmsg, #__recvmsg_nonblock, #__sendmsg, #__sendmsg_nonblock, #read_nonblock, #write_nonblock, #__read_nonblock, #__recv_nonblock, #__write_nonblock | |
Constructor Details
    .new(host, port)  ⇒ socket   
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.
# File 'ext/socket/sockssocket.c', line 27
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, Qfalse, Qnil);
}
  Instance Method Details
#close
Closes the SOCKS connection.
# File 'ext/socket/sockssocket.c', line 45
static VALUE
socks_s_close(VALUE sock)
{
    rb_io_t *fptr;
    GetOpenFile(sock, fptr);
    shutdown(fptr->fd, SHUT_RDWR);
    return rb_io_close(sock);
}